1. 程式人生 > >計算N的階乘中0的個數

計算N的階乘中0的個數

首先我們要知道0是怎麼來的 兩個個位數相乘只有2*5=10會出現一個0 所以我們只要找出因子2和5能匹配多少對

因為在N的階乘中因子為2的個數遠遠大於因子為5的個數

比如5!=120

是因為2*5 = 10能匹配出一對來而4還可以分成2*2所以2的數目遠遠大於5

所以下一步只要找出因子是5的個數

long long n;
    cin>>n;
    long long ans = 0;
    while(n>=5)
    {
        ans+=n/5;
        n=n/5;
    }
    cout<<ans<<endl;
只要迴圈找5 這個迴圈的意思是先找因子是5 然後找因子是25然後找125.。。。。。。

相關推薦

計算n尾部0個數

題目描述: 設計一個演算法,計算出n階乘中尾部零的個數。 eg. 11! = 39916800 輸入11,結果應該返回2。 分析: n的階乘可以分解為k和10的m次冪的乘積,結果resul

計算N0個數

首先我們要知道0是怎麼來的 兩個個位數相乘只有2*5=10會出現一個0 所以我們只要找出因子2和5能匹配多少對 因為在N的階乘中因子為2的個數遠遠大於因子為5的個數 比如5!=120 是因為2*5 = 10能匹配出一對來而4還可以分成2*2所以2的數目遠遠大於5 所以下一

lintcode入門級-計算n尾部零的個數

題目地址:https://www.lintcode.com/problem/trailing-zeros/description 我想法很簡單,算出數值大小,直接對尾部進行除法取餘找0: (function () { var trailingZeros = function

【演算法】計算n尾部零的個數

思路: 觀察1-20階乘的結果,觀察尾數為0的分佈情況 發現有一個5就會出現一個0 其中5!(有一個5),10!(有兩個5) 5!=120(一個0) 10!=3628800(兩個0) #include <stdio.h> long trailingZeros(long n) {

設計一個演算法,計算n尾部零的個數

考慮到只要有5,或者因子為5的數,就可以產生0的尾部。假如1*2*3*4*...*250,那麼250/5=50可以知道,有50個為5的倍數,但是裡面有多少個為25的倍數,125的倍數..., 50/5=10,可知25的倍數有10個,10/5=2,可知125的倍數有兩個,以此

【Python】設計一個演算法,計算n尾部零的個數

1.常見的思路:先求N的階乘,再計算零的個數。 (但是,時間消耗太大)    def trailingZeros( n):         S = 1         for i in range(1,n+1):             S = S * i        

求一個數0個數

求一個數的階乘中0的個數 連續幾天產出為負,再不寫點東西沒法交代了。。。 public class The_number_of_0_in_FactorialN { public static void main(String[] args) { int n=5; Syst

n尾部零的個數(JAVA)

描述 設計一個演算法,計算出n階乘中尾部零的個數 樣例 11! = 39916800,因此應該返回 2 挑戰 O(logN)的時間複雜度 所有可能造成尾部0的只有10的倍數,5的倍數,也就是求階乘中擁有的5的個數。 例如 11 = 1,2,3,4

n後面0個數+組合數學結果0個數舉例+公式推導

先掛上一題,用作例子。 (n!%(10^k))==0. 已知n,求能使上式成立的k的最大值。 例如 5!= 120  有1個0,10!= 3628800 ,有2個0。 很明顯,階乘中所有數的因

Java 演算法程式設計 N末尾0個數問題

求一數N的階層 就是 1*2*3...*n   ,其實求這道題 就是求1到n 中一共可拆解出幾個5,因為2*5=10 ,有一個對5 和2  必然末尾有個0 ,又因為 5肯定比2少 ,所以就簡化成求5的

(當N非常大時)巧用Java函式BigInteger計算N

資料型別       型別名       位長      取值範圍           預設值 布林型           boolean       1          true,false          false 位元組型             byte           8        

java 求n尾部0個數

題目描述 求n的階乘尾部0的個數 樣例輸入 11 樣例輸出 2 java程式碼 import java.util.Scanner; import java.util.Arrays; p

計算末尾0個數

這個題目是程式設計之美上出現的,今年在幾個公司筆試的時候都出現了這個題目,之前一直以為 直接用 N  /  5 就是結果,昨天被土豆麵試的時候,才發現自己理解錯了,思路是這樣的,0 的個數就是 1,,2,...,n中n個數中能夠分解出5的因子的個數。之前以為 5,10,2

poj1401--Factorial--末尾0個數

cnblogs sin factorial int amp div factor color sum Description   求出n!的末尾有多少個0(連續的)。   每組測試點有t個測試數據,輸入格式為第一行一個t,後面2~t+1行每行一個n,輸出其結果。 Sampl

末尾 0個數.c

// 階乘尾數零的個數 // 100!的末尾有多少個0? /* 問題分析和演算法設計: 首先分析在100!結果值的末尾產生0的條件。不難看出:一個整數 若含有一個因子5則必然會在求100!時產生一個0。因此問題轉化為 求1到100這100個整數中包含了多少個因子5。若整數N

末尾0個數(java)

末尾0的個數 題目描述 輸入一個正整數,求n!末尾有多少個0?比如n = 10; n! = 3628800 ,所以答案為2 輸入描述 輸入為一行,n (1 <= n <= 1000)//輸入量範圍限制不能用先求階乘的方法,會產生溢位

Factorial Trailing Zeroes(OJ) 求其尾數0個數[1808548329]

問題描述: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. 問題

【LeetCode】Factorial Trailing Zeroes 尾部0個數

題目 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time c

Factorial(最後0個數

Factorial Time Limit: 1500MS Memory Limit: 65536K Total Submissions: 15475 Accepted: 9533 Description The most important part of

題2:n尾部零的個數

題目描述: 設計一個演算法,計算出n階乘中尾部零的個數。注意:時間複雜度為O(lgn)。 思路: 要求n的階乘,就是求1到n這n個數相乘。在這1到n個數當中,只有2和5相乘的結果才會出現0,其中10的倍數也可以看做是2和5相乘的結果,所以,可以在1到n