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

LeetCode -- Factorial Trailing Zeroes

編輯:C++入門知識

LeetCode -- Factorial Trailing Zeroes


題目描述:


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


Note: Your solution should be in logarithmic time complexity.


給定整數n,找出小於n的數中,找出階乘末尾為0的數的個數。




本題如果分別求1!,2!...n!,根本無法通過測試數據。
規律為:對於數字m!∈(0,n] ,如果m!末尾為0,那麼必有1個因數為5和2。因此題目便轉化為:
統計(0,n]之間,5約數個數和。



 


實現代碼:


public class Solution {
    public int TrailingZeroes(int n) {
        var c = 0;
        var factor = 5;
		var end = int.MaxValue / 5;
        while(n >= factor && factor != int.MaxValue){
            c += n/factor;
			if(factor > end){
				factor = int.MaxValue;
			}
			else{
				factor *= 5;
			}
        }
		
		return c;
    }
}


 

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