来自武科大 oj 的一道简单题。
Description
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153 = 1^3+ 5^3+ 3^3153=13+53+33
要求编写程序,计算所有N位水仙花数。
Input
一个正整数N(3≤N≤8)
Output
按递增顺序输出所有N位水仙花数,每个数字占一行。
枚举法遍历,找出符合条件的数即可。代码如下。
#include//定义一个求数的N次幂函数,接收两个参数,num 数字和 times 幂的次数 int pow(int num, int times) { int temp = num; for (int i = 1; i < times; i++) { num *= temp; } return num; } int main() { int N, min, max; scanf("%d", &N); //min max 为上下界 min = pow(10, N - 1); max = pow(10, N); for (int i = min; i < max; i++) { int num = i; int sum = 0; //循环求数字的每个位数的N次幂的和 while (num > 0){ sum += pow(num % 10, N); num /= 10; } //相等即为水仙花数 if (i == sum) { printf("%dn", i); } } return 0; }



