码迷,mamicode.com
首页 > 其他好文 > 详细

《编程之美》笔记

时间:2015-10-30 14:10:33      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 


第1章 游戏之乐----游戏中碰到的题目

 

 

 

 

 

 

第2章 数学之魅----数字中的技巧

 2.2 不要被阶乘吓倒

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

  方法一:一个数字k如果乘以2,则其二进制就会左移一位。那么N!的质因子分解中的2的个数就是N!的二进制中有多少个后缀零。具体实现与N!后缀零一样。

技术分享
 1 int lowestOne(int N)
 2 {
 3     int ans=0;
 4     while(N)
 5     {
 6         N>>=1;
 7         ans+=N;
 8     }
 9     return ans+1;//由于求的是后缀0的个数,所以最后一个1应该是ans+1
10 }
实现

  方法二:答案为N!减去其二进制表示中含1的个数。比如 11011-1-1-1-1=(10000-1)+(1000-1)+(10-1)+(1-1)=1111+111+1=1101+110+11+1。需观察规律。

 

 

 

 

 

 

 

第3章 结构之法----字符串及链表的探索

 

 

 

 

 

 

 

 

第4章 数学之趣----数学游戏的乐趣

 

《编程之美》笔记

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4922943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!