水仙花数(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值变大时,效率十分低。求优化!
posted on 2015-01-21 16:04  赛亚人  阅读(144)  评论(0编辑  收藏  举报