博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
N!末尾有多少个零
阅读量:7211 次
发布时间:2019-06-29

本文共 1108 字,大约阅读时间需要 3 分钟。

题目一:210!最后结果有几个零。

请自己思索10分钟以上再看解释
凡是这种题目必有规律可言, 关键是你找到这个规律的恒心。可采用笨拙的方法思考。
1!  =  1                               ----  无0
2! = 2 * 1! = 2                        ----  无0
3! = 3 * 2! = 6                        ----  无0
4! = 4 * 3! = 24
5! = 5 * 4!  = 120                      有了一个零
思考这个0是怎么出现的                    ------------ 5与一个偶数相乘得到的结果
这个就是规律
10! = 2*5 * 9!                           -------------再出现一个0
15! = 3*5 * 14!                          -------------再出现一个0
..
25! = 5*5 * 24!                          --------------这里出现两个0
125! = 5*5*5*5 *124!                     ---------------出现四个零
结果末尾有多少个0的问题可以转换为N!乘式中可以分解出多少个5的问题.因为5和其前面的任何一个偶数相乘都会产生0
如果口算:
在由1到N的数中共可以分解出多少个5.例如25!,可以分解出5(1×5)、10(2×5),15(3×5),25(5×5),共可以分解出5个5,所以25!末尾有5个0;
上代码:

int ZeroNum(int n){    int j,num=0;    for(int i=n;i>1;i--)    {            j=i;            while(j%5==0)            {               num++;               j/=5;             }             }         return num;}

很好理解了吧

题目二:1!+2!+3!+4!+……+100!最后结果个位数字是几?

好算了吧,5!以后末尾都是零,所以 为1! + 2! +3! +4! 的末位值

问题三:求N!的二进制表示中最低位1的位置?

由十进制数转换为2进制数的过程知要求求N!的二进制表示中最低位1的位置,即求乘因式中含有2的个数.

 

int ZeroNum(int n){    int j,num=0;    for(int i=n;i>1;i--)    {            j=i;            while(j%2==0)            {               num++;               j/=2;             }             }         return num;}

分析分析吧

 

 

转载地址:http://fgeum.baihongyu.com/

你可能感兴趣的文章
【转载】Java 内存分配全面浅析
查看>>
【Android】监听Notification被清除
查看>>
jQuery动态五星评分
查看>>
自制简单表单验证relative与absolute定位
查看>>
C标准函数库中获取时间与日期、对时间与日期数据操作及格式化
查看>>
WebGIS中解决使用Lucene进行兴趣点搜索排序的两种思路
查看>>
驱动继电器实验
查看>>
技术宅---我的网上抢火车票攻略
查看>>
爱上MVC~业务层刻意抛出异常,全局异常的捕获它并按格式返回
查看>>
R+Hadoop大数据方案有哪些坑?
查看>>
架构,改善程序复用性的设计~第五讲 复用离不开反射和IOC
查看>>
Android 使用dagger2进行依赖注入(基础篇)
查看>>
一个游戏
查看>>
如何让帝国CMS7.2搜索模板支持动态标签调用
查看>>
公众号和小程序可以同名了 名称支持同主体复用
查看>>
96.2. Yum 安装
查看>>
[再寄小读者之数学篇](2015-06-08 一个有意思的定积分计算)
查看>>
搭建本地 Registry - 每天5分钟玩转 Docker 容器技术(20)
查看>>
logger异常日志要点总结
查看>>
chrony软件使用说明
查看>>