#P6034. Ryoku 与最初之人笔记

Ryoku 与最初之人笔记

题目背景

Ryoku 在阅读「最初之人」的笔记的时候,发现了一个有趣的运算:xor\rm xor,这个运算的输入是两个数,输出是一个数,对应的运算时将输入的两个数化为二进制,再把每一位进行比较,若相同则输出的二进制中的这一位为 00,否则为 11

在关于运算 xor\text{xor} 笔记的下面有一道习题。Ryoku 很快就得出了答案,她想要考考你。

题目描述

Ryoku 向你复述了题目:求:

$$\sum_{a = 0}^n \sum_{b = a + 1}^n [a\equiv b\pmod {a \text{ xor } b}] $$

即:求满足 ab(moda xor b)a\equiv b\pmod {a \text{ xor } b},且 a,ba,b 均为小于等于 nn 的非负整数,a<ba<b,的有序二元组 (a,b)(a,b) 个数。

输入格式

输入包含一个整数 nn

输出格式

输出包含一个整数,为上式的值,答案对 109+710^9 + 7 取模。

2
2
42
274

提示

【样例 1 说明】

符合题意的数对 (a,b)(a,b) 的有:(0,1),(0,2)(0,1), (0,2)


【数据规模与约定】

对于 20%20\% 的数据,n103n\le 10^3
对于 60%60\% 的数据,n106n\le 10^6
对于 70%70\% 的数据,n109n\le 10^9
对于 100%100\% 的数据,2n10182\le n \le 10^{18}