我如何显示在第 8 个基数(数字基数 8?)中具有 4 位表示的所有数字?

How do i show all numbers that have a 4 digit representation in the 8th base(numerical base 8?)?

如果我知道如何做到这一点,我会在这里放一个代码。但是,我只有数字基数的代码:

using namespace std;
int n,i,s,rest,cat;
int main()
{

    cin>>n;

    s=0;
    i=1;
    while(n>0)
    {
        rest=n%8;
        cout<<"rest: "<<endl<<rest<<endl;
        cat=n/8;
        cout<<"cat: "<<endl<<cat<<endl;
        s=s+rest*i;
        cout<<"s: "<<endl<<s<<endl;
        i=i*10;
        cout<<"i: "<<endl<<i<<endl;
        n=cat;
    }
    cout<<"s="<<s;
    return 0;
}

4位八进制数中最小的数是多少?八进制中4位数字表示的最大数是多少?您可以手动解决这个问题,然后遍历这些值。

纸面上:

1000_(base8) = X_(base10) // solve for X
7777_(base8) = Y_(base10) // solve for Y

然后在你的代码中,在这两个数字之间循环。这将输出八进制 1000 和八进制 7777(含)之间的所有数字的 octal 形式。

std::cout << std::oct; // set all integer outputs on std::cout to octal
for (unsigned int i = X; i <= Y; i++)
    std::cout << i << "\n"; 

std::cout << std::dec; // set it back to decimal

您需要 #include <iomanip> 才能使用流格式说明符 std::oct

如果你想让你的程序从一个字符串中计算出一个任意的八进制数,你可以使用std::stoull。这给出了表示八进制 1000 的无符号整数:

int X = std::stoul("1000", 0, 8);

如果你要用数学,那么你可以认出最小的base-nm位数的数是n**(m-1),其中**代表求幂(除了在你有一个 1 位数字的边缘情况下,在这种情况下,可以表示的最小数字是 0).

m位数的最大base-n数是(n**m) - 1.

计算指数时,您可能会想使用 pow。不要那样做。那是针对浮点数的。使用循环计算整数 n**m