給定乙個整數N,那麼N的階乘N!末尾有多少個零呢?

2022-08-31 04:45:08 字數 619 閱讀 4337

題目:給定乙個整數n,那麼n的階乘n!末尾有多少個零呢?

末尾有幾個零?如果我們從哪些數相乘可以的出10,這個角度來解決這個問題,這就會變成簡單。對質因數進行分解由於10=2*5,即每一對2和5就可以產生乙個10,如果我們求出n!中,2和5的分別的次方數,假設為x,z,取決於兩個數中最小的那個數,於是有公式,m=min(x,z),m為零的個數,由於在階乘中,2出現的概率比5的高,所以公式m=z所以

解法一:演算法比較簡單,就是直接計算階乘的裡面的每乙個元素包含5的個數

public static int countzeronum1(int n)

}return num;

}解法二:公式 z=[n/5] + [n/5^2]+ ...該公式的[n/5]含義是在不大於n的階乘中包含乙個5的個數,就比如40裡面,包含乙個5的個數為5,10,15,20,..40   即 40/5=8個(裡面有8個元素包含乙個5),那當我們遇到類似於元素為25時,裡面有5*5時,即裡面有兩個5,所以就用[n/5^2]算出包含兩個5時的個數,類似這樣的運算,當5^k>n時,停止

public static int countzeronum2(int n)

return num;

}本文的內容來自程式設計之美和個人對題目的一些理解

給定乙個整數N,那麼N的階乘N!末尾有多少個0呢?

題目詳情 給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。題目分析 看到題第一想法是將n的階乘求出來然後取計算,但是再一想又會出現資料溢位的問題。所以就想到了另外一種辦法。因為 n!1 2 3 4 5 n 所以我們可以採用分解質因數來解決...

實現乙個整數N,其階乘N!末尾有多少個0?

給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。也許很多人首先想的就是先求出其階乘,然後通過其階乘判斷末尾有多少個0 我的第乙個想法也是如此 以下是我對於這個思想的 實現 void n of zero int n printf the s...

輸入乙個正整數n,輸出n 的值。

輸入乙個正整數 n nn 輸出 n n n 的值。其中n 1 2 3 nn 1 2 3 cdots n n 1 2 3 n演算法描述 n n n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列 a aa 來表示乙個大整數 a aa a 0 a 0 a 0 表示 a a...