美文网首页
1325 D. Ehab the Xorcist

1325 D. Ehab the Xorcist

作者: evilgiven | 来源:发表于2020-03-15 20:29 被阅读0次

题意:

给两个数字 u,v 求一个最短的数组 {ai} 使得数组内所有数字异或的结果为u 且和为v

思路:

分情况讨论一下

  • 显然v>u的情况下无解输出 -1,再思考一下发现 u 和 v 不具有相同的奇偶性时同样无解
  • u==v,输出u即可(特例:u==0时数组长度为0)
  • 考虑到 x xor x == 0,可以输出 u xor (v - u)/2 xor (v - u)/2,其中两个(v - u)/2异或相抵消
  • 题目要求输出最短的数组,这时可以考虑到如果在二进制位上 u 和 (v - u)/2 没有在同一个位置的 1,有 u xor (v - u)/2 == u + (v - u)/2,则可以把上一条中的前两个数字 u,(v - u)/2 合并,此时答案是长度为 2 的数组 u + (v - u)/2,(v - u)/2

code

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);

    long long u, v;

    cin >> u >> v;
    if (u > v || (v - u) & 1) cout << -1 << endl;
    else if (u == v) {
        if (u == 0) cout << 0 << endl;
        else cout << 1 << endl << u << endl;
    } else {
        long long x = (v - u) >> 1;
        if (u + x == (u ^ x)) cout << 2 << endl << u + x << ' ' << x << endl;
        else cout << 3 << endl << u << ' ' << x << ' ' << x << endl;
    }

    return 0;
}

相关文章

  • 1325 D. Ehab the Xorcist

    题意: 给两个数字 u,v 求一个最短的数组 {ai} 使得数组内所有数字异或的结果为u 且和为v 思路: 分情况...

  • bistuacm 2019新生训练赛第9场题解

    A. Mahmoud and Ehab and the MEX 题目链接:https://codeforces.c...

  • 1325

    2020.11.15 星期日 晴 礼拜天因过两天有事所以不能休班,今早云灿没吃早饭,带了点儿点心去了奶奶家...

  • CodeFoeces-959A

    题目 原题链接:A. Mahmoud and Ehab and the even-odd game 题意 给定一个...

  • 1325:折腾

    2019.5.10.日精进: 能转换来的结果,一样是有价值的结果;不断折腾,不断转换,不停止! 海昌一束

  • 4.24(1325)

    今天的温度太高了,孩子热的感觉过夏天,送完老大和二宝吃完饭在车库玩,天天在外边玩都晒黑了,晚上儿子要吃凉皮去市...

  • D.💪

    学号:2017101448 姓名:董艳蓉 性别:女 城市:山西运城 简书号:17数448董艳蓉 擅长:骑自行车,打...

  • D.

    不经意间,季节已悄然转换,大雁南飞,空中飘雪,爆竹响起,柳树吐新,日子一如白驹过隙。 生活是一个过程,...

  • D.?

    灯 从未延长白昼 只是加深了对黑暗的恐惧

  • Laravel学习问题

    RuntimeException in compiled php line 1325 ** The only su...

网友评论

      本文标题:1325 D. Ehab the Xorcist

      本文链接:https://www.haomeiwen.com/subject/vvkbehtx.html