题目描述:
给定一个非负整数N,求N的阶乘N!末尾0的个数,例如N=10,N!=3628800,那么N!的末尾有两个0
输入格式
输入包括多行数据,每行一个非负整数N,0<=N<=100000
输出格式
对输入的每个N,输出N!末尾0的个数,多个输出之间换行
输入样例
0
1
2
3
4
5
6
7
8
9
10
输出样例
0
0
0
0
0
1
1
1
1
1
2
参考代码
n=int(input())
while n!="" : #输入不为空格则继续执行,一种常见多行输入方式
m=0 #末尾0个个数
for i in range(1,n+1) : #1到n
while i % 5 ==0 : #被5整除
m=m+1
i=i//5 #地板除
print(m)
n=int(input())
采用求阶乘之后再除10计算末尾零的个数可能会导致溢出,换种思路,10=5×2,1到N间能被2整除的数肯定比5多,即转换为求1×2×3×4×5×6×··· ×N能分解出多少个5,就有多少个10,进而可以求得末尾0的个数。
测试结果