专栏文章

B4236 [四川青少年 C++ 算法设计大赛 2024] 4-5 年级组第 7 题

B4236题解参与者 5已保存评论 5

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
5 条
当前快照
1 份
快照标识符
@mipyoskf
此快照首次捕获于
2025/12/03 20:06
3 个月前
此快照最后确认于
2025/12/03 20:06
3 个月前
查看原文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察数论。
n!n! 的末尾有多少个 00,相当于乘上了多少个 2×52\times 5(也就是 1010),这里需要注意,对于每个乘数都需要质因数分解,例如 8=2×2×28=2\times 2\times 210=2×510=2\times 5
由于乘上的 22 肯定比乘上的 55 多,因此只需考察一共乘上了多少个 55。在 nn 以内,一共有 n÷5n\div 555 的倍数。然而,25=5×525=5\times 5,应该还需对答案有一次贡献;125=5×5×5125=5\times 5\times 5,还需要对答案有一次贡献……因此,答案就是:nn 以内有多少个 5,25,125,625,5,25,125,625,\dots 的倍数。可以使用循环语句完成这一题。
参考代码:
CPP
while (n > 0) {
    count += n / 5;
    n /= 5;
}

评论

5 条评论,欢迎与作者交流。

正在加载评论...