要求1000的階乘尾部0的個數,如果想先求出1000的階乘,肯定超過了基本資料型別的取值範圍,此時就需要通過其他途徑來解決問題。
biginteger可以接收很大的整數,所以完全可以接收1000的階乘的結果。
public
static
void main(string args)
string str = bi.tostring();
intcount = 0;
for(int i = str.length()-1; i >= 0; --i)
system.out.println(count);
}
首先,乙個數要想在相乘的時候產生0,必須要是5的倍數,這樣在相乘的時候產生至少乙個0,這樣的數有1000/5=200個,在這兩百個數中,有些數是25的倍數,這些數與其他數相乘的時候可以產生兩個0,這些書共有200/5=40個,而在這40個數中,有一些數是125的倍數,這些數可以產生3個0,有40/5=8個,一次類推,這樣就得到了遞推公式:
public
static
void
main(string args)
public
static
intfun(int n)
階乘尾部0的個數
輸入 輸入資料有若干行,每行上有乙個非負整數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 in...
階乘尾部的0
挑戰 首先我們不考慮時間複雜的解決思路是先求出 n 的階乘,然後再計算 n 階乘尾部 0 的個數。如下 public long trailingzeros long n 求尾部 0 的個數 while arg 10 0 result arg 10 return result 時間複雜度為 o n 那...
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 得...