🐷大肚肚
CF-76D3

异或运算

0.5s💾 256MB

📋 题目描述

给定两个整数 AABB,请你找到两个整数 XX , YY 满足以下两个个条件: (11A=X+YA=X+Y ; (22B=XYB=X \oplus Y ,其中 \oplus 表示异或运算; (33XX 是满足上述两个条件的所有非负整数中最小的数。

📥 输入格式

共有两行,第一行仅有一个整数 AA ,第二行仅有一个整数 BB0A,B26410\le A,B\le 2^{64}-1)。

📤 输出格式

如果无法找到满足题目要求的数输出 1-1 ,否则在同一行输出两个整数 XXYY ,两数间用一个空格分隔。

📝 样例 1

输入
142
76
输出
33 109

💡 题目讲解

1

理解题意

已知 A=X+YA = X + YB=XYB = X \oplus Y。求最小的非负整数 XX

题目里同时出现了 加法(+)异或(⊕)——这就是一个信号,告诉我们应该思考它们之间的关系。

先来回顾两个基本运算。

异或(⊕):按位比较——相同为 0,不同为 1。

5 = 101 ⊕ 3 = 011 ───────── 110 = 6

与(&):按位比较——两个位都是 1 才得 1。

5 = 101 & 3 = 011 ───────── 001 = 1
1 / 6