n的階乘結果中末尾有多少個零?

2021-06-25 10:18:32 字數 607 閱讀 5061

題目:n的階乘中一共有多少個零?

解答:產生零的結果只能有一種可能性那就是2*5=10,然而n的階乘本質上是可以拆解為很多2和5以及其他不包含2和5的乘數的積,例如5的階乘:1*2*3*4*5=1*2*3*2*2*5。按照這個思路,將n的階乘乘積的每一項進行拆解,看看可以拆解出多少個2和多少個5,然後取2的個數和5的個數中最小的即可。程式**如下:

#include int compute_zero(int n)

temp = i;

while(0 == temp%5)

} return (five_count > two_count ? two_count : five_count);

}int compute_answer(int n)

} return answer;

}int main()

注:實測輸入25沒有問題,輸入的資料過大的時候,compute_answer函式的計算結果可能會出錯,本身compute_answer函式的結果也限制了結果的大小主要是顯示了後面的低位高位就丟棄掉了,但是根據上面分析的compute_zero結果是不會出錯的,這裡將兩個輸出來主要是做乙個對比。測試的結果如下所示:

N的階乘末尾有多少個零

問題 n的階乘 n 中的末尾有多少個0?例如 n 5,n 120.末尾有1個0.分析 想到這個問題,有人可能第一反應就是現求出n 然後再根據求出的結果,最後得出n 的末尾有多少個0。但是轉念一想,會不會溢位,等等。其實,從 那些數相乘可以得到10 這個角度,問題就變得比較的簡單了。首先考慮,如果n的...

n 階乘末尾有多少個零0

題目 初階 1 2 3 100 求結果末尾有多少個零。高階 n的階乘末尾有多少個0 分析 一般類似的題目都會蘊含某種規律或簡便方法的階乘末尾乙個零表示乙個進製,則相當於乘以10而10 是由2 5所得,在1 100當中,可以產生10的有 0 2 4 5 6 8 結尾的數字,顯然2是確定的,因為4 6 ...

N 末尾有多少個零

題目一 210 最後結果有幾個零。請自己思索10分鐘以上再看解釋 凡是這種題目必有規律可言,關鍵是你找到這個規律的恆心。可採用笨拙的方法思考。1 1 無0 2!2 1!2 無0 3!3 2!6 無0 4!4 3!24 5!5 4 120 有了乙個零 思考這個0是怎麼出現的 5與乙個偶數相乘得到的結果...