N!末尾有多少0
分析:出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
#include
#include
using namespace std;
const int maxn=2000;
using namespace std;
int fac(int N)
{
int prime[maxn]; //记录素数
int num[maxn]; //记录对应素数的个数
int i,cnt=0;
memset(num,0,sizeof(num));
for(i=2;i*i<=N;i++) //素因子分解
{
if(N%i==0)
{
prime[cnt]=i;
while(N%i==0)
{
num[cnt]++;
N/=i;
}
}
cnt++;
}
if(N>1)
{
prime[cnt]=N;
num[cnt++]=1;
}
for(i=0;i
>N)
{ int sum=0;
while(N!=1)
{
sum+=fac(N);
fac(N--);
}
cout<
<
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数
出现0的情况那么只有2*5的情况可以得到,那么我们可以对n!进行素因子分解,因为分解后2的个数一定是大于5的个数的因此我们只需要统计n!含有的素因子5的个数