基准时间限制: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阶乘后有几个0,那就可以想一下,什么乘于什么等于零,偶数乘于5就可以了,那任何的偶数都是2的倍数,借以就明白了,求出质因子2与5就可以组合成一个10了,显然,能被2整除的数在N阶乘中出现的频率比5高的多了,进而就是转化为求质因子5的个数了。要明白是质因子5的个数(注意,25有两个5!)
原创代码:
#include<stdio.h>
int main()
{
int n,sum=0;
scanf("%d",&n);
while(n>0)
{
sum=sum+n/5;//每隔五个有一个因子
n=n/5;//每隔25,有两个因子,125,3个因子
}
printf("%d",sum);
}