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

 

试试这样,应该快很多,供参考:

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