文章

2

粉丝

265

获赞

4

访问

4.0k

头像
找到含有5的因子(5,10,15.....)
P1626 上海交通大学2018年机试题
发布于2023年3月29日 22:14
阅读数 2.1k

求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;
	}
}


 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发