CF1699A The Third Three Number Problem

发布时间 2023-04-26 22:29:43作者: 酒巷清风&

题意简述

构造出一个三元组a,b,c使得(a ⊕ b)+(a ⊕ c)+(b ⊕ c) = n,若无解输出-1。
符号 ⊕ 的意思为异或

个人分析

首先要了解异或符号的性质:
1,x⊕0=x
2,x⊕x=x
根据异或符号的性质可以得到一下构造:
a=b=0,c=n/2
c=0,a=b=n/2

通过上述可以发现答案都是偶数
所以若n为奇则无解

AC代码

void solved()
{
    int n;
    cin >> n;
    
    if(n&1)
        cout << -1 << endl;
    else
        cout << n/2 << ' ' << 0 << ' ' << 0 << endl;
}

题后分析

这道题主要了解符号 ⊕ 的性质并通过题意和样例要清楚这道题的构造