不要被阶乘吓倒_第1页
不要被阶乘吓倒_第2页
不要被阶乘吓倒_第3页
不要被阶乘吓倒_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

写书评,摘编程之美-微软技术面试心得,不要继承,继承是一个很有趣的函数,但是很多人都害怕它。我们看与两次乘胜相关的问题。1.给整数n。那么n的继承n!末尾有多少个零?例如:n=10,n!=3 628 800,n!末端有两个零。2.请n!二进制表示中最低位1的位置。2.2书评写作编程之美-微软技术面试心得分析及解法有些人应该完全计算n!的值?溢出来了怎么办?事实上,“什么数字乘以10?”的角度来看,问题变得简单了。先想想,如果n!=K10M,k不能被10整除,那么n!末端有m个零。再想一想,n!分解质量因子,n!=(2x)(3y)(5z),10=25,因此M只与X和Z相关,2和5的每对乘以10,结果为M=min(X,Z)。很容易看出x大于z。就是把公式简化为M=Z,因为可除以2的次数比可除以5的次数要高得多。根据上述分析,如果只计算z的值,则为n!结尾零的数目。问题1的解法1)计算z的最直接方法是I (I=1,2,n)的因数分解中,计算5的指数,and:代码列表2-6 ret=0;for(I=1);I N,N/5K=0。)在公式中,N/5为不大于N的数字中的5的倍数贡献了一个5,N/52为不大于N的数字中的52的倍数贡献了一个.代码如下:ret=0;while(N) ret=N/5;n/=5;问题2是n!二进制表示中最低位1的位置。给我整数n,n!二进制表显示的最低1是第几个?例如:N=3,N!=6,那么n!的二进制表示(1 010)的最低位1位于第二位。为了写书评,取得编程之美-微软技术面试心得,获得更好的解决方案,首先要变换标题。首先看一个二进制数除以2的计算过程和结果如何。用一个二进制数除以2,实际过程如下:确保最后一个二进制数为0,如果为0,则将此二进制数向右移动一个字符,则成为商值(为什么)。相反,1表示此二进制数为奇数,不能除以2的原因。所以,这个问题实际上等于找n!包含质量系数2的数字。答案是n!将包含质量系数2的数字加1。问题2的解法1因为n!N/2 n/4 n/8 n/16.小数2的数量(例如1)根据上述分析计算如下:代码列表2-7 int lowestOne(int N) int Ret=0;while(N) N=1;ret=N; return Ret 问题2的解法2 n!包含小数2的数字等于n减n的二进制表示中的1的数字。我们也可以通过这个规律来解决。以下假设N=11011,以此定律为例,N!包含质量元素2的数字为N/2N/4N/8N/16.即:1101 110 11 1=(1000 100 1)(100 10)(10 1)1=(1000 100 10 1)(100 10 1)1=1111 1=(10000-).n到k的数量)。建立书评,以编程之美-微软技术面试心得=11011-N二进位表示法取得1的数值摘要。长度为m的任意二进制n为n=b 1 b 2 * 2b 3 * 22.可以表示为b m * 2 (m-1)。其中b I表示此二进制I的数字(1或0)。因此,如果最低位b1为1,则mingn为奇数。相反,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论