程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode 172 Factorial Trailing Zeroes(階乘後的零)(*)

LeetCode 172 Factorial Trailing Zeroes(階乘後的零)(*)

編輯:C++入門知識

LeetCode 172 Factorial Trailing Zeroes(階乘後的零)(*)


翻譯

給定一個整型n,返回n!後面的零的個數。

注意:你的解決方案應該在log時間復雜度內。

原文

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

Note: Your solution should be in logarithmic time complexity.

分析

起初我看題目的時候沒太注意,還以為就是求n這個數後面的零而已,雖然心想不會這麼簡單吧……就寫了一份代碼提交了,結果WA提示我5的話應該返回1,這我就納悶了,5後面毛的0吶……趕緊看題目……哦原來是階乘,那這個題我遇到過的。

要想最後有零,階乘的過程中就必須有5,如果是10的話就有兩個可以被5整除的數了,10和5,以此類推……

剛才特意去找了一下之前寫的那篇博客,大家可以去看看,蠻有意思的,用函數式語言LISP可以求出20000的階乘喔,^_^

100的階層真的算不出來嗎?

代碼

class Solution {
public:
    int trailingZeroes(int n) {
        int count = 0;
        while (n > 1)
            count += (n /= 5);
        return count;
    }
};

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved