/* 水仙花数是指一个n位正整数(n>=3),它的每个位上得数字得n次幂之和等于它本身 例如:153=1^3+5^3+3^3.*/
#include <stdio.h>
#include <math.h>
int main()
{
int n,mask;
printf("输入3~7的整数,表示位数:");
scanf("%d",&n);
mask=pow(10,n-1); // n=3 → mask=100
printf("mask=%d\n",mask);
int x,start=mask,end=(mask*10)-1; // start=100,end=999
printf("%d,%d\n",start,end);
for(start;start<=end;start++)
{
int t=mask,o=start,sum=0;
while(t>0)
{
x=o/t; // 得到每一位,循环求n次幂之和。
sum=pow(x,n)+sum;
o=o%t;
//printf("%d ",x);
t/=10;
}
if(sum==start)
{
printf("%d\n",sum);
}
//printf("\n");
}
return 0;
}