0034. 数字阶乘和
* * * *
拉格朗日计划
* * * *
数字阶乘和

145是个有趣的数,因为$145=1!+4!+5!$。

找出所有各位数字的阶乘和等于其本身的数,并求这些数的和。

注意:因为$1!=1$和$2!=2$不是和的形式,所以它们并不在考虑范围内。

本题难度:



解答

由于$8*9!=2903040 < 10^8$ 而 $7*9!=2540160>10^7$,因此这样的数最多有7位数字,暴力搜索得只有145和40585符合要求,它们的和是$40730$。

f=(1,1,2,6,24,120,720,5040,40320,362880)

p=[s for s in range(11,10000000) if sum(f[int(i)] for i in str(s))==s]

print sum(p), p