测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16479. Shortest Statement Ever

编程题 普及+/提高
知识点

题目描述

给定两个非负整数 $x$ 和 $y$,请找出两个非负整数 $p$ 和 $q$,使得 $p\;\&\;q=0$,并且 $|x-p|+|y-q|$ 最小。这里,$\&$ 表示[按位与运算](https://en.wikipedia.org/wiki/Bitwise_operation#AND)。

输入格式

输入包含多组测试用例。第一行为测试用例个数 $t$($1 \le t \le 10^4$)。
接下来的每个测试用例占一行,每行包含两个非负整数 $x$ 和 $y$($0 \le x, y < 2^{30}$)。

输出格式

对于每组测试用例,输出一行两个非负整数 $p$ 和 $q$,为你找到的一组满足条件的解。如果满足条件的 $(p, q)$ 有多组合法解,你可以输出其中任意一组。

可以证明,在题目给定的约束下,任一组合法解都满足 $\max(p, q) < 2^{31}$。

输入输出样例

输入 #1
7
0 0
1 1
3 6
7 11
4 4
123 321
1073741823 1073741822
输出 #1
0 0
2 1
3 8
6 9
4 3
128 321
1073741824 1073741822

说明/提示

对于第一个测试用例,一组合法解为 $p=0$,$q=0$,因为 $0\,\&\,0=0$,并且 $|x-p|+|y-q|=|0-0|+|0-0|=0$,在所有解中取到最小。

对于第三个测试用例,一组合法解为 $p=3$,$q=8$,因为 $3\,\&\,8=0$,并且 $|x-p|+|y-q|=|3-3|+|8-6|=2$。注意 $(p, q)=(3, 4)$ 也是一组合法解。
上一题 去做题 下一题