【CodeVS2860】阶乘末尾的零
2016-03-06 21:42
399 查看
Description
100的阶乘1*2*3*...*100结果是个很大的数,求这么大的数末尾有多少个连续的零。Input
含有一个正整数N (N不大于100000000)。Output
仅一个整数,表示N!的末尾有多少个连续的零。Sample Input
1000Sample Output
249题解
根据算术基本定理(正整数唯一分解定理) N! = 2X * 3Y * 5Z * …所有的0都是又2和5相乘得出的,而显然x>z,所以ans=z;
#include<iostream> using namespace std; int n,ans; int main(){ cin>>n; for (int i=5;i<=n;i+=5) for (int c=i;c%5==0&&c>0;c/=5) ans++; cout<<ans; }
写的时候犯了一个错误,for (;A,B;) 这样是条件A或条件B,而不是与。
进一步优化:z = [N/5] +[N/52] +[N/53] + …
#include<iostream> using namespace std; int n,ans; int main(){ cin>>n; for (int i=5;i<=n;i*=5) ans+=n/i; cout<<ans; }
维基百科 算术基本定理
相关文章推荐
- 学习笔记一
- hdu 1233 最小生成树
- Java大牛养成记(2)——JDBC
- layer.js弹出框
- struts2学习笔记--------struts2处理流程
- 《我是一只IT小小鸟》读书笔记
- Web开发学习之路--Springmvc+Hibernate之初体验
- 设计模式之适配器模式(Adapter)
- 第二周项目2——就拿胖子说事
- PAT-A1015. Reversible Primes (20)
- Web开发学习之路--Springmvc+Hibernate之初体验
- 数据结构——散列(二)分离连接法
- 百分比布局支持库
- hadoop集群配置之hive1.2.0安装部署(远程mysql)
- Linux常用命令(1)
- 陈波20150402
- 面对选择,优先自己的兴趣
- [POJ2975]Nim游戏(博弈)
- 【TC-SRM461Div1】Fencing Garden【Meet In The Middle】【二分】
- struts2学习笔记----------struts2.1.6接收中文请求参数乱码问题