以二进制给定一整数 L L L ,求有多少二元组 ( a , b ) (a,b) (a,b) 满足 a + b = a ⊕ b ≤ L a+b=a\oplus b\leq L a+b=a⊕b≤L 。
Solution
对 a , b a,b a,b 的二进制形式的每一位进行讨论。 因为异或是不进位加法,所以 a + b = a ⊕ b a+b=a\oplus b a+b=a⊕b 相当于 a a a 和 b b b 的同一位不能同为 1 1 1。 令 d p [ i ] [ 0 ] dp[i][0] dp[i][0] 为 a ⊕ b a\oplus b <