# 洛谷数学思维训练(python实现)

298 阅读1分钟

1.阶乘之乘

www.luogu.com.cn/problem/P23…

这道题是针对阶乘的,而找到末尾的0就是找到有多少个10连乘,而10都可以转换为2*5转换而来,而因为题目阶乘的性质,可以得到2的个数肯定比5多,此处可以仔细想一下,10的个数是由2和5之间少的个数决定的,于是只需要找到5的个数就好.

而为了优化时间复杂度,可以将阶乘的性质,将5的个数延续下去,这样避免重复计算5的个数代码如下

Code:

n = int(input())            #使用n
ans=0
s=0
for i in range(1,n+1):  #
  #使用了多少i
    temp = i
    while(temp%5==0):
        temp/=5 
        s+=1  #使用s记录上一个数阶乘5的个数
    ans+=s
​
print(ans)