小明刚刚学习计算机编程,老师给他出了这样一道题目,但是他怎样思考,都做不出来,于是,只好请教高手的你了。
求sum = 1!+2!+3!+……+6788!+6789!的末5位。提交格式:SimCTF{}
递归深度过大,依靠这个来控制:
import sys
sys.setrecursionlimit(200000)
代码:
import sys
sys.setrecursionlimit(200000)
def digui(n):
if n==1:
return 1
else:
return n*digui(n-1)
l=[]
for i in range(1,25):
print(str(i)+':'+str(digui(i)))
l.append(digui(i))
print(l)
print(sum(l))
一开始,我也是傻兮兮的让他计算。后来发现不太靠谱。要好久才可以。
后来看到别人说,计算前面24个就可以啦。我便开始试试。
原来是这样的规律:
前24个:
前30个:
后面的位数就不变化啦。看来,数学好就是强大。归纳总结!