leetcode-华为专题-172. 阶乘后的零
参考:
class Solution { public: int trailingZeroes(int n) { /* 可以看出结尾中0的个数由10决定,一个10就是一个0,两个10就是2个零 10又可以拆分为2、5两个因子,2每隔2个数出现1次,5每隔5个数出现一次,2的次数远多于5 所以可以直接算5出现的次数,就代表多少对2、5. 5 每隔5出现一次, n/5代表5出现的次数 25 = 5 * 5 每隔25出现一次, n/25代表25出现的次数。 125 = 。。。 但是记住n/5中已经包括25的两个5中其中一个出现的次数,所以再加上n/25代表另一个5出现的次数即可 */ int cnt = 0; while(n>0){ cnt = cnt + n/5; // n = n/5; // 更新n,再次n代表n/25、n/125 .... } return cnt; } };