Mona_Lis4 2021-06-19 20:02 采纳率: 100%
浏览 225
已采纳

PTA题集C语言水仙花数运行超时怎么解决?(在这个源代码基础上修改)感谢大神们!

#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;
}
  • 写回答

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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?