大佬求助(违规自删)
描述
给定三个非负整数 a,b,c , chuck 需要知道是否存在两个非负整数 x,y ,使得:
x∧y=a
x&y=b
x+y=c
请找到是否存在这样的 x,y 。
输入描述
输入
第一行三个非负整数 a,b,c(0≤a,b,c≤4∗10 3 ) , 含义如上。
输出描述
输出
如果存在这样的非负整数 x,y ,则输出 x,y 的值。否则输出 " −1−1 "。如果有多个 x,y 满足条件,输出 x 最大的。
用例输入 1
7 0 7
用例输出 1
7 0
用例输入 2
5 4 9
用例输出 2
-1 -1
用例输入 3
1 4 9
用例输出 3
5 4
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
// 计算 x 和 y
int k_plus_m = c - (a + b);
// 如果 k_plus_m < 0,则没有解
if (k_plus_m < 0) {
cout << "-1 -1" << endl;
return 0;
}
// 根据 a 和 b 计算 x 和 y
// x = a + k
// y = b + m
// 需要 x 和 y 满足 x & y = b
// 这意味着 b 必须是 a 的一部分
if ((a & b) != b) {
cout << "-1 -1" << endl;
return 0;
}
// 计算 x 和 y
int x = (a | b) + k_plus_m; // 这里我们用 | 来确保 x 满足条件
int y = (a | b); // y 从 b 开始
// 确保 y + x = c
if ((x + y) == c) {
cout << x << " " << y << endl;
} else {
cout << "-1 -1" << endl;
}
return 0;
}
有没有大佬帮忙指出来一下哪里错了QwQ
验证码:nmlg