zoukankan      html  css  js  c++  java
  • leetcode[172] Factorial Trailing Zeroes

    Given an integer n, return the number of trailing zeroes in n!.

    给定n,求n!的末尾有几个零。

    能组成零的末尾的莫过于2*5,和本身就是0结尾的,如10,20,。。。可以注意到以0结尾的也是可以分解成2*5的,所以目标就转化为求几个2*5因子了,又注意到,明显的5的因子个数比2的个数要少,例如n为6的时候只有一个5,但是仅仅4中就有两个2了。所以又转化为求5的个数就行了。

    因为5是每隔5出现一次,所以n除以5就是总共有几个含5的因子数了?是吗,其实25中有两个5,这样的话只算了一个5,还有一个漏掉了。

    所以你还要除以25,计算有几个25,依次类推还要125,625,。。。,知道5^k > n 为止。

    注意到 n/25 = n/5 /5, n/125 = n/25 /5,..., 所以我们可以每次都用/5,只是将n的值每次/5赋值就可。

    class Solution {
    public:
        int trailingZeroes(int n) {
            int cnt = 0;
            while(n > 4){
                cnt += n / 5;
                n /= 5; 
            }
            return cnt;
        }
    };    
  • 相关阅读:
    js将url转换二维码
    百度地图api使用
    js字符串转日期兼容性
    Object.keys的使用
    Web App和Native App的比较
    数组转为对象
    常用meta整理
    git merge和git rebase的区别
    GitHub 翻译之 'Hello-world' 翻译
    js数据类型
  • 原文地址:https://www.cnblogs.com/higerzhang/p/4223248.html
Copyright © 2011-2022 走看看