#332. [R53E]异或求和

[R53E]异或求和

时空限制

1S/512M

题目描述

f(x)f(x) 为满足 AB=xA \oplus B = x1A,Bx1 \le A, B \le x 的正整数对 (A,B)(A, B) 的数量,其中 \oplus 表示按位异或运算。

给定一个正整数 nn,求出 i=1nf(i)\sum_{i = 1}^{n} f(i)109+710^9 + 7 取模后的值。

格式

输入格式

输入共一行,包含一个正整数 nn

输出格式

输出共一行,包含一个整数,表示 i=1nf(i)\sum_{i = 1}^{n} f(i)109+710^9 + 7 取模后的值。

样例

样例输入 #1

5

样例输出 #1

4

样例解释 #1

  • f(1)=0f(1) = 0:没有满足 1A,B11 \le A, B \le 1AB=1A \oplus B = 1 的正整数对。
  • f(2)=0f(2) = 0:没有满足 1A,B21 \le A, B \le 2AB=2A \oplus B = 2 的正整数对。
  • f(3)=2f(3) = 2:满足条件的正整数对有 (1,2)(1, 2)(2,1)(2, 1),因为 12=31 \oplus 2 = 31,231, 2 \le 3
  • f(4)=0f(4) = 0
  • f(5)=2f(5) = 2:满足条件的正整数对有 (1,4)(1, 4)(4,1)(4, 1),因为 14=51 \oplus 4 = 51,451, 4 \le 5

因此,i=15f(i)=0+0+2+0+2=4\sum_{i = 1}^{5} f(i) = 0 + 0 + 2 + 0 + 2 = 4

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 nn\le
11 3030 100100
22 3030 10610^6
33 4040 101810^{18}

对于 100%100\% 的数据,1n10181 \le n \le 10^{18}