計算N 末尾所包含0的個數

2021-06-14 16:02:12 字數 816 閱讀 5148

問題描述:

給定乙個整數n,求出n!末尾有多少個0?

計算公式:

令f(x)表示正整數x末尾所包含0的個數,則有: 當0

當n>=5時,f(n!)=k+f(k!)  其中k=n/5(取整).

公式推導:

證明之前先熟悉乙個結論。

結論:對於n!,其因式分解中,如果存在乙個因子『5』,那麼它必然對應n!末尾的乙個'0'。下面證明這個結論。

證明:首先我們知道在乘法中產生0的途徑只有2*5得到10,所以有幾對2,5就可以得到幾個0.下面我們可以將n!分解,n!= [5k * 5(k-1) * ... * 10 * 5] * a,其中 n = 5k + r (0 <= r <= 4),a是乙個不含因子『5』的整數。對於序列5,10,15,······,5(k-1),5k,中每乙個數都含有因子『5』,並且在區間(5(k-1),5k) 內總有乙個2產生乙個0,將上述序列提出乙個5得到n!= 5^k * k! * a,其中k!可以遞迴的得到,其滿足結論.

有了上面的結論,我們知道f(n!) 只與5因子個數有關。f(n!) =  f(5^k * k! * a) = k + f(k!) = k + f(k!),其中k = n / 5(取整)。

**一:

#include int a(int n)

int main()

return 0;

}

**二:

#includeint main()

printf("%d\n",sum);

}return 0;

}

計算n 末尾所包含0的個數

例如,5!120,其末尾所含有的 0 的個數為1 10!3628800,其末尾所含有的 0 的個數為2 20!2432902008176640000,其末尾所含有的 0 的個數為4。這裡先給出其計算公式,後面給出推導過程。令f x 表示正整數x末尾所含有的 0 的個數,則有 當0 n 5時,f n ...

n!末尾0的個數

肯定不能直接求出 n 然後在計算後邊有多少個0 因為 1000000 的位數就是 5565709 對於 n!的末尾如果有乙個 0 的話,必然有乙個 5 與其對應著 所以就是找從 1 到 n 這些數的約數 因子 中有多少個 5 它們有幾個 5,n 末尾就有幾個0 令f x 表示正整數x末尾所含有的 0...

N階乘末尾0的個數

輸入乙個正整數n,求n 即階乘 末尾有多少個0?比如 n 10 n 3628800,所以答案為2 輸入為一行,n 1 n 1000 輸出乙個整數,即題目所求要判斷末尾有幾個0就是判斷可以整除幾次10。10的因子有5和2,而在0 9之間5的倍數只有乙個,2的倍數相對較多,所以本題也就轉換成了求n階乘中...