题目:
难点:
如何判断枚举上界;
如何判断各位阶乘和。
#include <stdio.h>
int main() {
int n = 1;
for (int i = 1; i <= 9; i++) {
n *= i;
}
printf("%d\n", n * 7);
return 0;
}
枚举上界:2540160
解题答案:
#include <stdio.h>
#define MAX_N 2540160 //枚举上界
int sum = 0;
int jiecheng_n[11] = {1};
void jiecheng() { //编程技巧: 打表,确定阶乘表。
for (int i = 1; i < 10; i++) {
jiecheng_n[i] = jiecheng_n[i - 1] * i;
}
return ;
}
int shuwei_jiecheng(int n) {
int sum_n = 0, x = n;
while (x) {
sum_n += jiecheng_n[x % 10];
x /= 10;
}
return sum_n == n;
}
int main() {
jiecheng();
for (int i = 10; i <= MAX_N; i++) {
if (!shuwei_jiecheng(i)) continue;
sum += i;
}
printf("%d\n", sum);
return 0;
}