階乘尾部0的個數

2021-10-08 18:36:48 字數 835 閱讀 4320

輸入

輸入資料有若干行,每行上有乙個非負整數n,對應一種情形。

輸出

對於每一種情形,直接輸出結果、換行。

樣例輸入816

30樣例輸出13

7方法一:

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

當0 < n < 5時,f(n!) = 0;

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

#include

#include

#include

intcon

(int n)

intmain()

return0;

}

方法二:

利用對10求餘得到尾部0的個數。

注意⚠️此方法只能求到12以內的階乘!(原因:計算溢位。)

(詳見:

#include

#include

#include

intcon

(int n)

printf

("%d\n"

,js)

;int count=0;

while

(js%

10==0)

return count;

}int

main()

return0;

}

階乘尾部的0

挑戰 首先我們不考慮時間複雜的解決思路是先求出 n 的階乘,然後再計算 n 階乘尾部 0 的個數。如下 public long trailingzeros long n 求尾部 0 的個數 while arg 10 0 result arg 10 return result 時間複雜度為 o n 那...

求1000的階乘尾部0的個數

要求1000的階乘尾部0的個數,如果想先求出1000的階乘,肯定超過了基本資料型別的取值範圍,此時就需要通過其他途徑來解決問題。biginteger可以接收很大的整數,所以完全可以接收1000的階乘的結果。public static void main string args string str ...

N階乘尾部的0個數

描述 設計乙個演算法,計算出n階乘中尾部零的個數 思路 1 1 2 3 n 1 2 3 2 2 5 2 3 7 2 2 2 3 3 2 5 化成質數相乘,只有2 5才可能得到結果有尾數中有0 2 因為2的個數是比5多的,求0的個數問題就轉化成了求5的個數的問題 3 5 5 5 5 5 5有n個5 得...