解题思路
本题考查按位异或与三角形不等式下的三元组计数。n≤3000,枚举两维即可。
- 条件 x⊕y⊕z=0 等价于 z=x⊕y。因此不必三层循环,只需枚举 x、y,再检查还原出的 z。
- 结合非降序 1≤x≤y≤z≤n,对每个 1≤x≤y≤n,令 z=x⊕y,再判断 y≤z≤n。
- 三角形条件在非降序下只需 x+y>z。注意到
x+y=(x⊕y)+2(xANDy)=z+2(xANDy)
因此 x+y>z 当且仅当 x 与 y 在某一二进制位上同时为 1(即 xANDy=0)。实现时直接判断 x+y>z 即可。
题目内容
地面光伏电站在做容量预测时,需要从标称容量集合 {1,2,…,n} 中选出三个子阵容量 x、y、z,组成一个容量三元组。只有同时满足下列验收条件的三元组会计入预测方案数:
- 容量非降:1≤x≤y≤z≤n。
- 三者按位异或结果为 0(对应二进制位相同得 0、不同得 1)。例如 4 (1002) 与 5 (1012) 满足 4⊕5=1 (0012)。验收式为
x⊕y⊕z=0
- 三边可构成三角形,即
x+y>z,x+z>y,y+z>x
由 x≤y≤z,后两个不等式自动成立,只需 x+y>z。
请统计合法容量三元组的个数。
输入描述
首先一行读入一个整型 n(1≤n≤3000)。
输出描述
写出一个非负整型,表示合法容量三元组的个数。
样例1
输入
4
输出
0
说明
在 1 到 4 中,(1,2,3) 满足 1≤1≤2≤3≤4 且 1⊕2⊕3=0,但 1+2=3 并不大于 3,不能构成三角形。其余三元组均不满足异或为 0。故答案为 0。
样例2
输入
12
输出
5
说明
合法三元组共 5 个:(3,5,6)、(3,9,10)、(5,9,12)、(6,10,12)、(7,11,12)。例如 7⊕11=12,且 7+11>12;而 (1,2,3) 虽异或为 0,但不满足三角形条件,不计入。