文章
2
粉丝
265
获赞
4
访问
4.0k
求n的阶乘末尾连续0的个数,等价于求n!中5因子的个数,因为每有一对2和5,就会产生一个10,进而在末尾多一个0。
因为在阶乘中肯定有足够的偶数,所以只需考虑有多少5的因子即可。找出n! 中5的因子的方法是:先算出1到n 中有多少个5的倍数,
再算出多少个25的倍数,再算出多少个125的倍数……依次类推就行。
因为5的倍数有n/5个,其中每个数都有一个5;25的倍数有n/25个,其中每个数有额外的一个5;125的倍数有n/125个,其中每个数有额外的两个5……因此,n!中5的因子个数为n/5+n/25+n/125+... 一直到n/(5的k次方)为止。
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
#include <map>
#include <stack>
#include<queue>
#include<math.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int temp=5;
int cnt=0;
while(temp<=n){
cnt+=n/temp;
temp*=5;
}
cout<<cnt<<endl;
}
}
登录后发布评论
暂无评论,来抢沙发