N!后面有多少个0
前置知识:质因数分解
思路:对N!进行质因数分解(是对阶乘分解不是对N分解),N!后面有多少个0就是看这些质因数相乘能产生多少个0,而能相乘产生0的两个质数只有2,5,而N!分解后2的指数一定比5的指数大(关键,因为只要是偶数都能分解出2,而5要每隔5个数才能分解出一个),所以我们就看一看N!能分解出几个5就行了。
操作:质因数能分解出5的整数每隔5会出现一次,我们把这个数除以5,取整得到的就是1~N里有多少个数会分解出5,但这样还没有完,有的数会分解出不止一个5,如25=5x5,就能分解出两个5,而我们N/5已经得到了1x5,2x5…5x5…and so on,又没隔5个数可以多得到一个5,所以我们总结如下:
用N不停对5取整,将结果加入ans中,直到N<5,我们就得到了一共分解出了多少个5,即得到了N!有多少个0.
P118
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m;
scanf("%d",&m);
int n;
while(m--)
{
scanf("%d",&n);
int ans=0;
while(n>=5)
{
ans+=(n/5);
n/=5;
}
printf("%d\n",ans);
}
return 0;
}