51nod-1003 阶乘后面0的数量

来源:互联网 发布:json文件dw打开乱码 编辑:程序博客网 时间:2024/05/21 18:34

1003 阶乘后面0的数量
基准时间限制: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

一开始就有想到找尾数为5的和0的数 因为这有这样才能凑出0,所以冲动的交了一波 结果就蒙了 只过2个数据。

然后参考了网上的题解
http://blog.csdn.net/u012773338/article/details/40154549,
http://blog.csdn.net/h1021456873/article/details/49134553

2个结合起来才发现自己少了一种情况
就是 当乘5的时候就是多一个零 当乘 25 的时候 其实是相当于乘5之后在乘5 当乘125的时候是相当于乘5在乘5在乘5 5就多一个0 25就多2个零 125就多3个零

第一个博客的这句话:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, 而 2 的个数是远远多余 5 的个数的, 因此求出 5 的个数即可.就是对上面的那个的总结。

帖上代码:

int main() {
int n;
cin >> n;
int m = 0, k = 5;

while(k <= n) {    m += n / k;    k *= 5;}cout << m << endl;

}

0 0
原创粉丝点击