我试了好几种做法,一直少一个153...自闭,也不知道哪里有问题
#include
#include
int main()
{
int d,a;
double n,x,y;
scanf("%lf",&n);
x=pow(10,n-1);
y=pow(10,n);
for(a=x;a<y;a++)
{
int b=a,i,s=0;
for(i=1;i<=n;i++)
{
d=b%10;
s=s+pow(d,n);
b=b/10;
}
if(a==s)
printf("%d\n",a);
}
}
找网上的一个答案到我自己电脑输出也少153
求解答
s=s+pow(d,n);
这个结果是不可靠的,因为浮点数可能存在误差,导致取整后少1或者多1。
你应该这么写
int mypow(int x, int y)
{
int r = 1;
for (int i = 0; i < y; i++) r = r * x;
return r;
}
然后调用mypow代替pow
我测试是有153的结果的
输出一下x和y的值,看看对不对