Description
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的NN次幂之和等于它本身。例如:153 = 1^3 + 5^3+ 3^3。 本题要求编写程序,计算所有N位水仙花数。
Input
输入在一行中给出一个正整数N(3≤N≤7)。
Output
按递增顺序输出所有NN位水仙花数,每个数字占一行。
Sample Input 1
3
Sample Output 1
153 370 371 407
Code
#include<stdio.h>
int main()
{
int num,count=1,count_0,n;
scanf("%d",&num);
for(int i=1; i<num; i++)
{
count*=10;
}
count_0=count*10;
for(int j=count; j<count_0; j++)
{
int sum=0,p=0;
p=j;
while(p!=0&&sum<=j)
{
int k=1;
n=p%10;
for(int i=1; i<=num; i++)
{
k*=n; //用pow函数会超时
}
sum+=k;
p/=10;
}
if(sum==j)
printf("%d\n",sum);
}
return 0;
}