輸入
輸入資料有若干行,每行上有乙個非負整數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 得...