7-5 水仙花数
分数 10
全屏浏览
切换布局
作者 徐镜春
单位 浙江大学
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
代码长度限制
16 KB
时间限制
2500 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <math.h>
int shuixianhua(int i,int n){
int ret;
int a,k,b,s=0;
int c=i;
while(c>0){
a=c%10,b=1;
for(k=1;k<=n;k++){
b*=a;
}
c/=10;
s+=b;
}if(s==i){
return ret=1;
}else{
return ret=0;
}
}
int main(void)
{
int n,i;
scanf("%d",&n);
for(i=pow(10,n-1);i<=pow(10,n)-1;i++){
if(shuixianhua(i,n)){
printf("%d\n",i);
}
}
}