各位数字的阶乘
145是个有趣的数,因为1! + 4! + 5! = 1 + 24 + 120 = 145。
找出所有各位数字的阶乘和等于其本身的数,并求它们的和。
注意:因为1! = 1和2! = 2不是和的形式,所以它们并不在讨论范围内。
代码演示
#include <iostream>
using namespace std;
#define MAX_N 3000000
int keep[10] = {1, 1};
void fac() {
for (int i = 2; i < 10; i++) {
keep[i] = i * keep[i - 1];
}
}
int is_val(int n) {
int x = n, temp = 0;
while (x) {
temp += keep[(x % 10)];
x /= 10;
}
return temp == n;
}
int main() {
fac();
int sum = 0;
for (int i = 3; i <= MAX_N; i++) {
if (is_val(i)) sum += i;
}
cout << sum << endl;
return 0;
}