末尾零的个数
N! 末尾有多少个 000 呢?
N!=1×2×⋯×N
里面讲到只有2和5遇到才会产生0(或者2的倍数和5的倍数)
然是2的个数比5的多,所以只需要计算n中包含多少个5就行
例如100
100/5=20.。20/5=4.。4/5=0 所以100!有24个0
不就是求5的个数嘛?为什么还不断循环除5呢?100/5不就是5的个数了嘛?
其实不是的,我最初就有这个疑惑。
无限的除以5是因为100/5=20.在20里面每5个数还有5的倍数,即在100里面每25个数也有一个5的倍数
例如25=5*5.如果单纯的用100/5,至少这个是少计算一次
code:
#include<iostream>
#include<cstdio>
#include<math.h>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<vector>
using namespace std;
const long long mod=1e15;
int main(){
int n;
cin>>n;
int sum=0;
while(n){
sum+=n/5;
n/=5;
}
cout<<sum;
return 0;
}