满意答案
chenjia0104
2013.11.05
采纳率:47% 等级:12
已帮助:6204人
#include
#include
int main()
{
for(unsigned int i = 100; i <= 0xffffffff; i++)
{
unsigned int a = i;
int b = 0;
while(a)
{
a /= 10;
b++;
}
unsigned int c = 0;
for (unsigned int j = i; j > 0; j /= 10)
{
c += (unsigned int)pow(j % 10, b);
}
if (c == i)
{
printf("%d\n", c);
}
}
return 0;
}
想要更大的数可以用 __int64 类型,那样 pow() 函数支持不了那么大的,得自己算了。
------------------------------------------------------
把你的文件名改成.cpp,不然会按C语言的方式来编译,C语言和C++还是有一点差别的,你不想改的话可以把代码改成下面的样子:
#include
#include
int main()
{
unsigned int i;
for( i= 100; i <= 0xffffffff; i++)
{
unsigned int a = i;
int b = 0;
unsigned int c = 0;
unsigned int j;
while(a)
{
a /= 10;
b++;
}
for (j = i; j > 0; j /= 10)
{
c += (unsigned int)pow(j % 10, b);
}
if (c == i)
{
printf("%d\n", c);
}
}
return 0;
}
00分享举报