水仙花数是指一个N位正整数N≥3它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序计算所有N位水仙花数。输入格式输入在一行中给出一个正整数N3≤N≤7。输出格式按递增顺序输出所有N位水仙花数每个数字占一行。输入样例3输出样例153370371407用c语言写一下
#include <stdio.h> #include <math.h>
int main() { int N; scanf("%d", &N); int begin = pow(10, N-1); // 起始数字 int end = pow(10, N); // 终止数字
for (int i = begin; i < end; i++)
{
int sum = 0; // 计算每个数的N次方和
int num = i;
while (num > 0)
{
int digit = num % 10; // 取出每一位数字
sum += pow(digit, N); // 计算N次方和
num /= 10; // 去掉已经计算的最低位
}
if (sum == i) // 如果符合水仙花数定义,输出
printf("%d\n", i);
}
return 0;
}
原文地址: http://www.cveoy.top/t/topic/brMu 著作权归作者所有。请勿转载和采集!