CF1699A The Third Three Number Problem

原题链接(https://codeforces.com/problemset/problem/1699/A)

题意简述

构造出一个三元组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;
}

题后分析

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

posted @ 2023-04-26 22:22  酒巷清风&  阅读(34)  评论(0)    收藏  举报