水仙花数是指一个NN位正整数(N\ge 3N≥3),它的每个位上的数字的NN次幂之和等于它本身。例如:153 = 1^3 + 5^3+ 3^3153=13+53+33。 本题要求编写程序,计算所有NN位水仙花数。
输入
输入在一行中给出一个正整数N(3\le N\le 73≤N≤7)。
输出
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例 1
3
输出样例 1
153 370 371 407 主要是时间问题,用math里的pow的话就会出现超时的问题;
#include<stdio.h> int pow(int a,int b) { int i,s=1; for (i = 0; i < b; i++) { s *= a; } return s; } int main() { int n; scanf("%d", &n); int s = 0, i, j, begin, end; begin = pow(10, n - 1); end = pow(10, n) - 1; for (i = begin; i <= end; i++) { s = 0; j = i; while (j) { s += pow(j % 10, n); j /= 10; } if (s == i) printf("%d\n", i); } return 0; }