题目链接:
172. 阶乘后的零 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/factorial-trailing-zeroes/
其实,遇到这种跟阶乘有关的题目,一般都是不用求阶乘的,小伙伴们千万不要被题目给迷惑了哦~
脑筋急转弯:我们要计算尾数有多少个0,根据我小学被罚抄了200遍九九乘法表的经验:只有2×5=10 ,
所以我们只需要找给定的数字当中有质因子5或2的个数即可(他俩当中较小的的那个就是答案)
现在判断质因子2和5的个数谁更大:
我们知道:[1,n]当中p的倍数有个,也就是这些数里面都含有一个p,我们继续,得到是的倍数的个数。依次类推:
[1,n]中是五的倍数的个数为,显然当p越小时,数字越大。
所以质因子2的个数不会小于质因子5的个数。
即我们只需要找到给定的数字当中有多少个质因子5即可。
根据上面的分析,我们很容易就能得到答案
上代码:
int trailingZeroes(int n) {int ans = 0;while(n){n /= 5;ans += n;}return ans;}
希望和诸公共勉!
PS:那些打不死我的,只会让我更强大!