水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
#include <stdio.h>
int pow(int num, int n){ //计算num的n次幂
int i, r = 1;
for (i=0; i<n; i++){
r *= num;
}
return r;
}
int count(int num){ //计算num是几位数
int cnt = 0;
while (num > 0){
num /= 10;
cnt++;
}
return cnt;
}
int f(int num){ //计算num每个位上的数字的n次幂之和
int sum = 0;
int cnt = count(num);
while (num > 0){
sum += pow(num%10, cnt);
num /= 10;
}
return sum;
}
int main(){
int n, i;
scanf("%d", &n);
for(i=pow(10, n-1); i<pow(10, n); i++){
if (f(i) == i){
printf("%d\n", i);
}
}
return 0;
}
该程序用于计算并输出所有N位的水仙花数。首先定义了一个计算次幂的函数`intpow`,然后`count`函数确定数字的位数,`f`函数计算每位数字的N次幂之和。在主函数中,遍历指定范围内的所有数,如果某个数等于其位数的N次幂之和,则输出该数。
&spm=1001.2101.3001.5002&articleId=129822987&d=1&t=3&u=21fbcf630e8c4586bb50c3678fc20a7f)
4653

被折叠的 条评论
为什么被折叠?



