CF1699A solution
Problem
给定一个 \(n\),要求找出三个自然数 \(a,b,c\) 满足 \((a\oplus b)+(b\oplus c)+(a\oplus c)=n\)。
link->https://codeforces.com/contest/1699/problem/A
Solution
又是 CF 经典诈骗题。
借用我们教练对异或运算的描述:异或运算就是在二进制情况下的不进位加法。
既然异或是“不进位加法”,那么他一定有一些加法的特性,比如说,\(a+b\) 与 \(a\oplus b\) 的奇偶性相同。具体证明可以自己对 \(a\) 和 \(b\) 的二进制个位枚举思考。
接下来我们考虑,什么情况下是不存在 \(a,b,c\) 满足条件的。
\(a,b,c\) 有三种奇偶情况:三偶、一奇两偶、两奇一偶、三奇。
即 \((a\oplus b)+(b\oplus c)+(a\oplus c)\) 的奇偶性有以下几种情况:
-
偶 \(+\) 偶 \(+\) 偶 \(+\) 偶 \(+\) 偶 \(+\) 偶 \(=\) 偶。
-
奇 \(+\) 偶 \(+\) 偶 \(+\) 偶 \(+\) 奇 \(+\) 偶 \(=\) 偶。
-
奇 \(+\) 奇 \(+\) 奇 \(+\) 偶 \(+\) 奇 \(+\) 偶 \(=\) 偶。
-
奇 \(+\) 奇 \(+\) 奇 \(+\) 奇 \(+\) 奇 \(+\) 奇 \(=\) 偶。
上面本应该是异或运算,我们却写成了加法运算,但是却并不影响答案的正确性,正是因为异或和加法运算所导致的奇偶性变化相同。
也就是说,\(n=(a\oplus b)+(b\oplus c)+(a\oplus c)\) 有且仅有可能是偶数,则如果 \(n\) 是奇数即输出 -1。
再看满足情况的 \(n\):我们不妨设 \(a=b=0\),则原式 \(=(0\oplus 0)+(0\oplus c)+(0\oplus c)=2c\),解得 \(n=\frac{n}{2}\),而 \(n\) 是偶数,则 \(c\) 有自然数解。输出先后输出上述 \(a,b,c\) 的值即可。

浙公网安备 33010602011771号