您的位置:首页 > 其它

数位DP ACdream 1154 Lowbit Sum

2014-08-01 14:04 411 查看


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: