链接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
来源:牛客网
- 空间限制:32768K
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:
输入为一行,n(1 ≤ n ≤ 1000)
输出描述:
输出一个整数,即题目所求
示例1
输入
10
输出
2
思路分析:统计末尾有多少个0,不需要真的把每个数相乘,0是由偶数乘以5得来的,因为是阶乘,所以偶数必然多过5,因此只需统计5的个数即是末尾0的个数;
#include <iostream>
#include <stdio.h>
int ncount(int n,int k);//求n中有多少个因子k
int main( )
{
int n,i,a=0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
a+=ncount(i,5);
}
printf("%d",a);
return 0;
}
int ncount(int n,int k)
{
int count=0;
while(n%k==0)//n能被k整除,一定包含因子k
{
count++;
n=n/k;
}
return count;
}