您的位置:首页 > 其它

2017滴滴校招 末尾0的个数(数学知识)

2017-07-21 13:50 239 查看
末尾0的个数

时间限制:1秒

空间限制:32768K

输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 
输入描述:
输入为一行,n(1 ≤ n ≤ 1000)


输出描述:
输出一个整数,即题目所求


输入例子1:
10


输出例子1:
2


思路:末尾0的个数就是指这个数总共有几个10因子,而10又能表示成2和5的乘积。假设m=n!,那么m中2的因子个数肯定大于5的因子个数,所以m中5的因子个数即是所要求结果;

显然n除以5可得到1~n中包含有一个因子5的个数,但是,1~n中有的数可以被5整除好几次,所以必须将这个数再除以5,得到1~n中包含有两个因子5的个数,依次循环进行累加即可得到全部5的因子个数;

代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
int n;
cin>>n;
int cnt=0;
do{
n/=5;
cnt+=n;
}while(n);
cout<<cnt<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: