posts - 195,  comments - 30,  trackbacks - 0
作为2进制的加法,从k加1变成k+1可能会出现若干进位。如1011加1就会有2个进位。给定n,从0开始不停地加1直到n,计算在此过程中总共会有多少次进位。

Input

输入的每一行有单独的一个值n。n=0标志输入结束

Output

对于输入的每一行,使用单独一行输出对应结果。

Sample Input

2
5
10
0

Sample Output

1
3
8
总结规律:
1,0                 
2,1                   
3,1
4,3
5,3
6,4
7,4
8,7
9,7
10,8
11,8
12,10
16,15
32,31
64,63
你会发现2^n的都是2^n-1
其他13=8+4+1=(8-1)+(4-1)+(1-1),有多少个2^n,则减多少次1。
直接根据位运算即可求
              

posted on 2009-07-14 17:18 luis 阅读(200) 评论(0)  编辑 收藏 引用 所属分类: 规律

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜