#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
int i,m,n,temp,sum;
sum=0;
scanf("%d",&n);
for(i=pow(10,n-1);i<pow(10,n);i++)
{ temp=i;
while(temp)
{ if(temp>10)
{
m=temp%10;
sum+=pow(m,n);
temp/=10;
}else{
sum+=pow(temp,n);
temp/=10;
}
}
if(sum==i)
{
printf("%d\n",i);
}
}
return 0;
}
回答:sum初始化放错了位置,在里面每次都得初始化,截图如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char* argv[]) {
int i, m, n, temp, sum;
scanf("%d", &n);
for (i = pow(10, n - 1); i < pow(10, n); i++)
{
sum = 0; //修改
temp = i;
while (temp)
{
if (temp > 0)
{
m = temp % 10;
sum += pow(m, n);
temp /= 10;
}
else {
sum += pow(temp, n);
temp /= 10;
}
}
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}