#include<stdio.h>
#include<math.h>
int main()
{
int N,i;
scanf("%d",&N);
for(i=pow(10,N-1);i<pow(10,N);i++){
int t=i;
int sum=0;
for(;t>0;t/=10){
sum+=pow(t%10,N);
}
if(sum==i){
printf("%d\n",i);
}
}
return 0;
}
试试这样,应该快很多,供参考:
#include<stdio.h>
#include<math.h>
int main()
{
int N,i,p,t,sum,n,m,k;
scanf("%d",&N);
i = pow(10,N-1);
p = pow(10,N);
for(;i < p;i++){
for(sum=0,t=i;t>0;t/=10){
m=N;k=1;
n = t%10;
while(m--)k*=n;
sum+= k;
}
if(sum==i){
printf("%d\n",i);
}
}
return 0;
}