2017滴滴校招 末尾0的个数(数学知识)
2017-07-21 13:50
239 查看
末尾0的个数
时间限制:1秒
空间限制:32768K
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:
输出描述:
输入例子1:
输出例子1:
思路:末尾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的因子个数;
代码:
时间限制: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; }
相关文章推荐
- 机器学习笔记之基础数学知识(一)
- 压缩感知中的数学知识:稀疏、范数、符号arg min
- 数学基础知识积累——范数
- 数学知识的应用(天枰称重)
- 校招必备的操作系统知识(二)
- 关于熵的一些数学知识
- 机器学习(2)数学知识积累
- 其它数学知识及算法
- 用思维导图组织数学知识
- ACM会用到的一点数学知识
- ACM的数学知识体系
- 3D数学基础知识
- D3D编程必备的数学知识(3)
- 3D数学 ---- 矩阵的更多知识(1)
- 机器学习中的基本数学知识
- 数学基础(2)~ 数理统计基础知识
- 压缩感知中的数学知识:凸优化
- Unity3D中数学知识之【1】:SmoothDamp平滑阻尼
- C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。
- 指针知识(四):指针数学计算