水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
#include<stdio.h>
int main()
{
int N,m,n,j;
scanf("%d",&N);
int first=1,i=1;
do
{
first=first*10;
i++;
}while(i<N);
j=first;
m=j*10;
for(j;j<m;j++){
n=j;
int sum=0;
do{
int p,k=0,z=1;
p=n%10;
n=n/10;
while(k<N)
{
z*=p;
k++;
}
sum=sum+z;
}while(n>0);
if(sum==j)
printf("%d\n",j);
}
}
//思路:以N=3为例
// 1.求下线与上线;(100~999)(N-1)*10法
// 2.遍历;for语句
// 3.拆位;% /
// 4.求幂次方;乘自己本身(N-1)次
// 5.求和;sum
// 6.判断输出;