✨今日算法一题
文章目录
阶乘后的零
题目描述
思路详解
刚拿到本题呢,还是比较懵的。本题需要求出结果的尾随的0的个数。
那么我们思考这些个0的来源是哪里,我们把 n!倒过来思考 n! = 1 * 2 *…n
那么0是怎么得出的呢,我们考虑首先 2 * 5 = 1 0,4 * 15 = 60…,还有其他的10,20,等等。
我们仔细考虑这些有什么共同的特点,这两种情况,他们都是有一个数是 5 的倍数,那么我们只需要寻找有多少5的倍数就可以了。
代码与结果
class Solution { public int trailingZeroes(int n) { int ans = 0; for (int i = 5; i <= n; i += 5) { for (int x = i; x % 5 == 0; x /= 5) { ++ans; } } return ans; } }
✨总结
今天的题主要考察了数学思维的转化,有大佬的评论区也可以用公式证明一下哦!!小编这里偷偷懒,就不证明啦!!! 加油!!!