求n的阶乘后有多少个0
程序员文章站
2024-03-15 18:45:36
...
需求
n!后面有多少个0
6!=1*2*3*4*5*6=720 720后面有1个0
n=10000,求n!。
解析
- 思路1 因2足够多,简化为每个阶,多少个5的因子,每个记一次0
- 思路2 排序n个数,每轮除5,依次得到可被5的指数整除(5,25,125…)的个数,后累加求和即是
js解法
n=0 // 计数
k=10000 // 初始值
// 外层遍历阶数
for(k;k>=1;k--){
i = k
// 内层遍历求每阶存在多个5的因子
for(;i%5==0;i=i/5){
n++
}
}
console.log(n) // 2499
// 简化版,求5的个数
// t 每次除5得到的结果是在t的范围内可被5整除个数,下一次则是5的阶乘
// 即第一次除5得到的是被5除的数个数
// 第二次是25因子,第三次75...
t = 10000
n = 0
while(parseInt(t/5) >= 1){
n += parseInt(t/5)
t = parseInt(t/5)
}
console.log(n) //2499
python解法
# 求解n的阶乘有多少个0
# 实质是累计求阶乘式中5因子出现的次数
tmp = 10000
count = 0
while tmp >= 5 :
tmp //= 5
count += tmp
print(count) #2499
上一篇: c++基础--std::string
下一篇: NOWCODER编程题——末尾0的个数