#1310. 【例题4】数位翻转

【例题4】数位翻转

【例题4】数位翻转

题目描述

g(x)g(x)为将xx的二进制表示进行翻转后得到的数。也就是如果xx的二进制表示是a1a_{1},a2a_{2},\ldots,ana_{n}(其中a1=1a_{1}=1),那么它翻转过来就是ana_{n},an1a_{n-1},\ldots,a1a_{1}。例如g(2)=1g(2)=1g(6)=3g(6)=3g(10)=5g(10)=5

cnt(x)cnt(x)xx的二进制表示下11的个数。给定RR,求i=1Rcnt(i+g(i))\sum_{i=1}^{R}cnt(i+g(i))

输入格式

第一行一个正整数RR

输出格式

输出一行一个整数,表示答案。

数据范围与提示

  • 对于30%30\%的数据,满足1R1051 \leq R \leq 10^{5}
  • 对于50%50\%的数据,满足1R1091 \leq R \leq 10^{9}
  • 另有20%20\%的数据,满足存在某个ii使得R=2iR = 2^{i}
  • 对于100%100\%的数据,满足1R10141 \leq R \leq 10^{14}

样例

3
5
21312421
264774008