#P1587. gcd (gcd)

gcd (gcd)

题目描述

Luke 是一名充满好奇心的数学探险家。他最近迷上了一种神秘的数字游戏,游戏规则很简单:在一片数字大陆上,Luke 需要找到特定的数字对。每次,他都要选择两个数字 aabb,并且要求它们满足一些奇特的关系。

在这片数字大陆上,有一个强大的神秘力量,它就是“最大公约数”(gcd),以及一个神秘的运算符“异或”(xor)。Luke 的任务是找到一对 aabb 满足 gcd(a,b)=axorb\operatorname{gcd}(a, b) = a \operatorname{xor} b

然而,这并不是那么简单!Luke 发现这对数字必须位于 [1,n][1, n] 之间,且他只能找出无序的数字对,也就是说 (a,b)(a, b)(b,a)(b, a) 是相同的。

现在,Luke 需要你的帮助,来找出在给定的数字范围内有多少对符合要求的数字对。快来帮助 Luke 一起解开这个谜题吧!

输入格式

输入共一行,一个整数 nn

输出格式

输出一行一个整数,即答案

样例输入 #1

3

样例输出 #1

1

样例输入 #2

588

样例输出 #2

887

样例输入 #3

1234567

样例输出 #3

2153842

数据范围

【样例 1 解释】

gcd(2,3)=23=1\gcd(2,3)=2 \oplus 3=1

对于30%30\%的数据,n103n \le 10^3

对于60%60\%的数据,n105n \le 10^5

对于100%100\%的数据,n107n \le 10^7