文章
11
粉丝
27
获赞
19
访问
1.2k
#include<bits/stdc++.h>
using namespace std;
//
//寻找n!中质因子5的个数,用for循环还是太慢,超时
//换个思路,含有质因子5的数一定是5的倍数,
//质因子有一个5的数是5的倍数, 质因子有两个5的数是25的倍数 (当然了是25的倍数的数也是5的倍数)
//但是同样的如果是25的倍数,数里面就包含两个质因子5,现在把从1到n这n个数看作n个参赛者
//第一轮除以5,(消耗掉每个参赛者手中一个5)
//第二轮除以25,此时只有一个质因子5的数就无法参赛了, 消耗掉质因子5个数大于1的参赛者手中的一个5
// 第三轮除以125...(以此类推,但要保证5^k<=n)
//累加每一轮参赛者的个数,就是这n个参赛者手中一共有的5的个数 、
//下面注释掉的代码是用 for循环的方法,超时
//void findzhi(int *a,int n){
// while(n%2==0){
// a[2]++;
// n=n/2;
// }
// while(n%5==0){
// a[5]++;
// n=n/5;
// }
//}
int main(){
int k,ans;
int n;
while(cin>>n){
// memset(a,0,sizeof(a));
// a=0;b=0;
// for( i=2;i<=n;i++){
// k=i;
// while(k%2==0){
// a++;
// k=k/2;
// }
// while(k%5==0){
// b++;
// k=k/5;
// }
// }
// int ans=0;
// while(a*b!=0) {
// ans++;
// a--;
// b--;
// }
// cout<<ans<<endl;
k=5;
ans=0;
while(n/k!=0){
ans=ans+n/k;
k=k*5;
}
cout<&...
登录后发布评论
暂无评论,来抢沙发