【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出
生活随笔
收集整理的這篇文章主要介紹了
【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
網(wǎng)上有這樣一個(gè)廣為流傳的有趣問(wèn)題:
1024! 末尾有多少個(gè)0?
相應(yīng)的解法是:
末尾0的個(gè)數(shù)取決于乘法中因子2和5的個(gè)數(shù)。顯然乘法中因子2的個(gè)數(shù)大于5的個(gè)數(shù),所以我們只需統(tǒng)計(jì)因子5的個(gè)數(shù)。
是5的倍數(shù)的數(shù)有: 1024 / 5 = 204個(gè)
是25的倍數(shù)的數(shù)有:1024 / 25 = 40個(gè)
是125的倍數(shù)的數(shù)有:1024 / 125 = 8個(gè)
是625的倍數(shù)的數(shù)有:1024 / 625 = 1個(gè)
所以1024! 中總共有204+40+8+1=253個(gè)因子5。
也就是說(shuō)1024! 末尾有253個(gè)0。
int countZeros( int n ){int num = 0;while( n > 5 ){n = ( n - (n%5) ) / 5;num += n;}return num; }
我又自己做了一下這道題目,一遍AC,貼代碼留念。
AC代碼如下:
#include <iostream>using namespace std;int countZeros( int n ){int num = 0;while( n >= 5 ){n /= 5;num += n;}return num; }int main() {int n;while( cin>>n ){while( n-- ){int m;cin>>m;cout<<countZeros(m)<<endl;}}return 0; }
總結(jié)
以上是生活随笔為你收集整理的【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习中的数学——牛顿迭代法(Newt
- 下一篇: 迈创CoaXPress采集卡安装操作说明