【欧拉计划】34. Digit factorials

(本题取 $n=9$)

【思路】我们可以储存 $0 \sim 9$ 的所有阶乘的值,然后在 $[10,9!]$ 内枚举所有的数并检验即可。枚举的时间复杂度为 $\mathcal O(n!)$:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
const int fac[]={1,1,2,6,24,120,720,5040,40320,362880};
int ans;
int main()
{
for(int i=10;i<=362880;++i)
{
int j=i,s=0;
while(j)
{
s+=fac[j%10];
j/=10;
}
if(s==i)ans+=i;
}
printf("%d",ans);
return 0;
}

【欧拉计划】34. Digit factorials

https://hensier.github.io/projecteuler/34/

作者

hensier

发布于

2022-05-01

更新于

2023-01-02

许可协议

评论