您的位置:首页 > 其它

ACdream 1154 Lowbit Sum

2014-07-31 16:46 447 查看


Lowbit Sum

Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others)

SubmitStatisticNext
Problem


Problem Description

long long ans = 0;

for(int i = 1; i <= n; i ++)

    ans += lowbit(i)

lowbit(i)的意思是将i转化成二进制数之后,只保留最低位的1及其后面的0,截断前面的内容,然后再转成10进制数

比如lowbit(7),7的二进制位是111,lowbit(7) = 1

6 = 110(2),lowbit(6) = 2,同理lowbit(4) = 4,lowbit(12) = 4,lowbit(2) = 2,lowbit(8) = 8
每输入一个n,求ans


Input

多组数据,每组数据一个n(1 <= n <= 10^9)


Output

每组数据输出一行,对应的ans


Sample Input

1
2
3



Sample Output

1
3
4



Source

dream


Manager

scaucontest

这道题,简直闹心啊,明明是一道水题,我花了好长时间才想出来---看来我还真是水的掉渣

下面是我的AC代码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 数学推理