1-6 水仙花数
分数 10
作者 徐镜春
单位 浙江大学
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
输出样例:
答案
假如N为3
- 要先预计算0-9的N次方,避免重复计算,提高效率,到时候直接加数组里面的次方后的数
- 遍历每个数(100-999)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <iostream> #include <cmath> using namespace std;
int main() { int N; cin >> N; long long start = pow(10, N - 1); long long end = pow(10, N) - 1; int power[10]; for (int i = 0; i < 10; ++i) { power[i] = pow(i, N); } for (long long num = start; num <= end; ++num) { long long temp = num; long long sum = 0; while (temp > 0) { int digit = temp % 10; sum += power[digit]; temp /= 10; } if (sum == num) { cout << num << endl; } } return 0; }
|