100阶乘末尾有多少个零
100! = 1 * 2 * 3 * ... * 99 * 100
如果結尾要有0,必然是有兩個數字相乘進位了,而10 = 2 * 5,所以一個數字末尾有多少個0,取決于它分解因子后,有多少個2和有多少個5,假設2的個數為m,5的個數為n,那么最終的結果為min(m,n),而根據實際情況,當數字大于10且末尾有0的時候,顯然2的個數必然大于等于5的個數,所以最終的結果取決于因子5的個數,也就是說,一個數字末尾0的個數取決于其分解因子之后5的個數,前提是它必然有0,用f(n)來表示數n末尾0的個數,即包含的因子5的個數,則100!末尾0的個數就可以表示為f(100!) = f(100) + f(99) + f(98) + ... + f(2) + f(1),其中
100末尾有2個0,即有2個因子5,f(100) = 2,
99末尾沒有0,也沒有因子5,即f(98) = 0
...
95末尾沒有0,有因子5一個,即f(95) = 1
...
5末尾沒有0,有因子5一個,即f(5) = 1
...
F(100!) = f(100) + f(99) + f(98) + ... + f(2) + f(1) = 2 + 20 + 1 + 1 = 24
此處進一步討論任意一個數n,其含有的因子5的個數,
int f(int n) {int ret = 0;while(n){if(0 == n % 5){n /= 5;++ret;}else{break;}}return ret; }現在進一步問N!末尾有幾個0
int g(int n) {if(n < 5){return 0;}int sum = 0;for(int i = 1; i <= n; ++i){sum += f(i);}return sum; }?
轉載于:https://www.cnblogs.com/seeken/p/5653487.html
總結
以上是生活随笔為你收集整理的100阶乘末尾有多少个零的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法】N Queens Problem
- 下一篇: 51 NOD 1238 最小公倍数之和