#P15434. [蓝桥杯 2025 国 Python B] 三角形构造

[蓝桥杯 2025 国 Python B] 三角形构造

说明

小蓝正在画三角形,他先规定了三角形的一条边的边长为 xx,你需要找出有多少个正整数 yy 满足以下所有条件:

  • 1yx1 \le y \le x
  • x,yx, y 以及 xyx | y 这三个数可以构成一个非退化的三角形的边长。

其中,xyx | y 表示 xxyy 的二进制按位或(Bitwise OR)运算结果。

提示:一个三角形是非退化的,意味着它的三条边长 a,b,ca, b, c 都必须为正,并且满足三角不等式:a+b>ca + b > ca+c>ba + c > bb+c>ab + c > a

如果其中任何一个不等式取等号(例如 a+b=ca + b = c),则该三角形是退化的(三点共线)。

输入格式

输入一行包含一个正整数 xx

输出格式

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

10
7

提示

样例说明

符合条件的 yy 有:2,3,6,7,8,9,102, 3, 6, 7, 8, 9, 10

评测用例规模与约定

对于 30%30\% 的评测用例,1x1031 \le x \le 10^3

对于所有评测用例,1x10161 \le x \le 10^{16}