如果我知道怎么做的话,我会在这里加个代码。然而,我只有数字基的代码:
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;
}
发布于 2020-03-22 19:37:16
用四位数表示的最小八进制数是多少?以八进制为单位的4位数字代表的最大数字是多少?您可以手工计算出这一点,然后循环遍历这些值。
纸面上:
1000_(base8) = X_(base10) // solve for X
7777_(base8) = Y_(base10) // solve for Y
在您的代码中,只需在这两个数字之间循环。这将输出从八进制1000到7777 (包括在内)之间的所有数字的八进制形式。
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-n
数占用m
数字是n**(m-1)
,其中**
表示指数(除了在边缘情况下,您有一个1位数,在这种情况下,可以表示的最小数字是0
)。
占用m
数字的最大m
数是(n**m) - 1
。
在计算指数时,您可能会尝试使用pow
。别干那事。这是浮点数。使用循环计算整数的n**m
。
https://stackoverflow.com/questions/60803874
复制相似问题