#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;
}

PTA题集C语言水仙花数运行超时怎么解决?(在这个源代码基础上修改)感谢大神们!
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qzjhjxj 2021-06-19 21:53关注
试试这样,应该快很多,供参考:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报