水仙花数(20)
#include<stdio.h> #include<math.h> int main() { int i,n,m,t,c,j; while(scanf("%d",&n)!=EOF) { if(n<3||n>7) continue; m=pow(10,n-1); for(i=m;i<10*m;i++) { t=i; c=0; for(j=0;j<n;j++) { c+=pow(t%10,n); t/=10; } if(c==i) printf("%d\n",i); } } return 0; }该算法当n值变大时,效率十分低。求优化!