//求任意位数的水仙花数3<=n<=7
#include<stdio.h>
int main()
{
int n,i;
int first = 1;
int p,sum;
int t,d,j;
printf("input n: ");
scanf("%d",&n);
//求出最开始遍历的数
for(i=1;i<n;i++)
{
first = first*10;
}
//开始遍历
for(i=first;i<first*10;i++)
{
sum = 0;
t = i;
do
{
d = t%10;
t = t/10;
p = 1;
for(j=1;j<=n;j++)
{
p = p*d;
}
sum = sum + p;
}while(t>0);
if(sum==i)
{
printf("%d\n",i);
}
}
return 0;
}
网友评论