不要被阶乘吓倒
来源:互联网 发布:适用于gal16v8d编程器 编辑:程序博客网 时间:2024/05/18 01:06
问题描述:给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!末尾有两个0
问题分析:算出N的阶乘再看他有多少个0肯定不实际,N稍微大点就极耗费时间空间,那么我们来分析一下什么时候会增加一个0呢,当存在2*5或者10的倍数时,其中10的倍数可以分解成(2*5)的n次方,很明显N!分解出来的质因子里面里面2的个数远远大于5,所以要知道N!有多少个0,只需要知道质因子里面5的个数即可。
简单代码:
优化:通过观察50!里面的数,5,10,15,20,25,30,35,40,45,50,我们可以发现每个5的倍数会贡献一个5,除此之外,每个25(5的平方)的倍数又另外贡献一个5。。。如此类推,5的n次方会在5的1次方、5的2次方.。5的n-1次方每次贡献一个5,到5的n次方再次贡献一个5,所以:
优化后代码:
拓展一:求N!二进制表示中最低位1的位置
问题分析:在10进制每乘以10后面就会多一个0,同理,在二进制中每乘以2就会多一个0,所以要知道最低位1的位置,只需知道N!的质因数中有多少个2即可
0 0
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 2.2 不要被阶乘吓倒
- 试题答案_不要被阶乘吓倒
- 编程之美--不要被阶乘吓倒
- [编程之美]不要被阶乘吓倒
- 编程之美---不要被阶乘吓倒
- 2.2不要被阶乘吓倒(读书笔记)
- 编程之美:不要被阶乘吓倒
- 不要被阶乘吓倒(1)
- No CPU/ABI system images installed for this target错误
- 搭建自己的SIP服务器:开源sip服务器opensips的搭建及终端TwInkle的使用 .
- hdu 5071 Chat(大模拟)
- R:因子的常用函数
- 11种方法助你成为开源编程能手
- 不要被阶乘吓倒
- Developing iOS7 Apps For iPhone and iPad
- mysql数据库双机同步开源软件otter
- js代码,当div中内容高度超出div高度的时候实现定制滚动条!
- Thrift下Java客户端与服务器端的开发
- linux下memcached的启动/结束的方式
- 微信上流传的offer待遇档次
- 如何查看MAC操作系统的位数
- 一些环境配置文章的搜集