51Nod 1003 阶乘后面0的数量
来源:互联网 发布:初中化学软件有哪些 编辑:程序博客网 时间:2024/05/21 20:28
方法一:
我们知道,10 = 2 * 5。每一个 2 与一个 5 相乘,结果就增加一个零。所以求 n!
后面的连续零的个数,其实就是求其中相乘的数含因子对 2 与 5 的个数。又因为从1到某个数,所含 2 的个数比 5 多,所以问题就可以进一步简化到求含有因子5的个数。
伪代码:
//o(nlogn)超时int n, ans = 0; cin>>n;for(int i = 5; i <= n; i+=5){ int t = i; while(t%5 == 0) t/=5, ++ans; }cout<<ans<<endl;
方法二:
求阶乘结果后面0的个数:
1~9 中 2*5 会出现0
所以只要有一个5就会出现一个0,因为5一定比2出现的晚.
其次有一个25(5^2)出现,也会出现一个0,
有一个125(5^3)出现,也会出现一个0.
……………………………………………………
………….. (5^k)...,,,....0
伪代码:
//o(logn)int n, ans = 0;cin>>n;while(n >= 5){ n /= 5; ans += n;}cout<<ans<<endl;
题目链接:
51Nod 1003 阶乘后面0的数量
题目描述
n的阶乘后面有多少个0?
6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。
Input
一个数N(1 <= N <= 10^9)
Output
输出0的数量
#include<iostream>using namespace std; int main(){ int n; cin>>n; int ans = 0; while(n >= 5) { n /= 5; ans += n; } cout<<ans<<endl; return 0;}
0 0
- 51-nod 1003 . 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量
- 51nod 1003阶乘后面0的数量
- 51nod-1003 阶乘后面0的数量
- 51Nod 1003 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量
- 51nod-【1003 阶乘后面0的数量】
- 51nod 1003 阶乘后面0的数量
- 51nod-1003 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量
- 51NOD 1003 阶乘后面0的数量
- [51NOD] 1003 阶乘后面0的数量 [数学]
- 1003 阶乘后面0的数量 51NOD
- 51nod 1003 阶乘后面0的数量
- 51nod 1003 阶乘后面0的数量【数学】
- 51Nod 1003 阶乘后面0的数量
- 用递归算法实现斐波那契数列显示(Java)
- Android cardview 去掉圆角和去掉背景
- git设置用户名密码
- 背包问题 — — NYOJ 860 又见01背包
- 【LeetCode从零单排(Java)】No1.Two Sum
- 51Nod 1003 阶乘后面0的数量
- 1000-A
- 機器學習基石 机器学习基石 (Machine Learning Foundations) 作业二 Q19-20 C++实现
- Java中的文件读写字节流,字符流
- rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法
- java学习笔记-面向对象(三)
- Burp Suite使用介绍(二)
- acm_problem_1002
- LCT学习笔记