求助
  • 板块灌水区
  • 楼主yin_hua_can_yu
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/13 18:45
  • 上次更新2024/9/13 21:50:02
查看原帖
求助
1236490
yin_hua_can_yu楼主2024/9/13 18:45

大佬求助(违规自删)

描述

给定三个非负整数 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

2024/9/13 18:45
加载中...