1、首先先说0个数,就是求n里面因子5的个数
2、N!的质因子2的个数 == [N/2]+[N/2^2]+[N/2^3]+....
然后+1就是得到位置了。(PS:位置从1开始算)
N!的质因子2的个数的另一个方法:
N!含有质因数2的个数,等于N减去N的二进制表示中1的个数
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int Get_num(int n){
int ans = 0;
while(n){
n = n / 2;
ans += n;
}
return ans;
}
int main(){
int n;
while(scanf("%d",&n) != EOF){
int ans = 0;
int t = n;
while(t){
t = t / 5;
ans += t;
}
int x = Get_num(n);
printf("%d %d\n",ans,x);
}
return 0 ;
}