参考了一下别人的然后写了一个
#include<stdio.h>
#include<math.h>
int Print(int n,int m,int *p){
int k,i,l;
for(i=n;i<m;i++){
int sum=0; //sum切记要写在for循环内,每次都要为0
l=i; //变量l=i,为了不改变i的值
while(l>0){ //例子:l=153 l=15 l=1
k=l%10; //k=3 k=5 k=1
sum+=p[k]; //sum=0+27; sum=27+125 sum=152+1;
l/=10; //l=15 l=1 l=0 结束while循环
}
if(sum==i)
printf("%d\n",sum);
}
}
int main(){
int N,a[10];
scanf("%d",&N);
for(int i=0;i<10;i++){
a[i]=pow(i,N); //存入0-9的3次方到a[0]-a[9]
}
Print(pow(10,N-1),pow(10,N),a);
}