基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
收藏
关注
n的阶乘后面有多少个0?
6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。
Input
一个数N(1 <= N <= 10^9)
Output
输出0的数量
Input示例
5
Output示例
1
勒让德定理:在正数n!的素因子标准分解式中,素数p的指数为∑(i=1,p^i<=n)[n/p^i](向下取整)。此题直接算出5的指数即可。
可见,有了数学定理算起来就是不一样啊
代码:
/*
1003 阶乘后面0的数量
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define ll long long
const int N=50005;
int main()
{
//判断有多少个2和5因子
//由于2的个数一定比5多,故只要判断5的个数即可
int n;
while(scanf("%d",&n)==1)
{
int sum=0;
int pul=5;
for(int i=1;pul<=n;i++)
{
sum+=n/pul;
pul*=5;
}
printf("%d\n",sum);
}
return 0;
}