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

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

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

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

本题难度:



解答

由于89!=2903040<10879!=2540160>107,因此这样的数最多有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