-代码如下
#include<stdio.h>
#include<math.h>
int main()
{
int N;
scanf("%d",&N);
int x,y,a;
int z=0;
x = pow(10,N);//最小
y = pow(10,(N+1));//最大
while(x<y)
{
while(x>0)
{
a=x%10;
z=z+pow(a,N);
x=x/10;
}
if(x==z)
{printf("%d\n",x);}
x=x+1;
}
return 0;
}
题主的代码修改如下:
#include<stdio.h>
#include<math.h>
int main()
{
int N;
scanf("%d", &N);
int x, y, a;
int z = 0, k, flg = 0; //修改
x = (int)pow(10, (double)(N - 1));//x = pow(10, N);//最小
y = (int)pow(10, (double)N);//最大//y = pow(10, (N + 1));//最大
while (x < y)
{
k = x; z = 0; //修改
while (k > 0)
{
a = k % 10;
z = z + (int)pow(a, (double)N);//修改
k = k / 10;
}
if (x == z)
{
printf(flg++ == 0 ? "%d" : "\n%d", x);//修改
}
x = x + 1;
}
return 0;
}