当前位置: 代码迷 >> 综合 >> leetcode题目--阶乘后的零 ---脑筋急转弯
  详细解决方案

leetcode题目--阶乘后的零 ---脑筋急转弯

热度:55   发布时间:2023-12-05 12:09:20.0

题目链接:

172. 阶乘后的零 - 力扣(LeetCode) (leetcode-cn.com)icon-default.png?t=M276https://leetcode-cn.com/problems/factorial-trailing-zeroes/

其实,遇到这种跟阶乘有关的题目,一般都是不用求阶乘的,小伙伴们千万不要被题目给迷惑了哦~

脑筋急转弯:我们要计算尾数有多少个0,根据我小学被罚抄了200遍九九乘法表的经验:只有2×5=10 ,

所以我们只需要找给定的数字当中有质因子5或2的个数即可(他俩当中较小的的那个就是答案)

现在判断质因子2和5的个数谁更大:

我们知道:[1,n]当中p的倍数有\frac{n}{p}个,也就是这些数里面都含有一个p,我们继续\frac{\frac{n}{p}}{p},得到是p^{2}的倍数的个数。依次类推:

[1,n]中是五的倍数的个数为\sum \frac{n}{p^{n}},显然当p越小时,数字越大。

所以质因子2的个数不会小于质因子5的个数。

即我们只需要找到给定的数字当中有多少个质因子5即可。

根据上面的分析,我们很容易就能得到答案\sum \frac{n}{5^{n}}

上代码:

int trailingZeroes(int n) {int ans = 0;while(n){n /= 5;ans += n;}return ans;}

希望和诸公共勉!

PS:那些打不死我的,只会让我更强大!