題目大意
輸入整數n,有多少對整數(a,b)滿足:1<=b<=a<=n,且 。
例如:
n=7,有4對:
(3,2)
(5,4)
(6,4)
(7,6)
思路
要滿足的條件爲:
- 設 則,a是c的倍數。
- 則 。
枚舉a和c,因爲a是c的倍數。複雜度是
然後算出b=aXORc,最後驗證是否有 複雜度爲
總體複雜度爲
通過答案得到c = a-b
證明如下:
- 通過gcd性質:a-b >= c
- 通過XOR性質:a-b <= a xor b
可得到c=a-b
.
# Hit
若a xor b = c
則a xor c = b
“`