平衡数对
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
33DAI 要回答 次询问。每次给定一个正整数 ,请你求出任意一对正整数 ,满足
其中 表示按位异或:把两个整数写成二进制后逐位比较,该位相同则结果的这一位是 ,不同则是 。在 C++ 中,按位异或写成 ^(例如 a ^ b)。
- 如果不存在这样的数对,请输出 ;
- 如果存在多组,输出任意一组即可。
输入格式
从文件 pair.in 读入数据。
输入的第一行包含一个正整数 ,表示询问组数。
接下来 行,每行包含一个正整数 ,表示一次询问。
输出格式
输出到文件 pair.out。
对于每组询问,输出一行:
- 如果存在满足条件的数对,输出两个正整数 与 ,用一个空格分隔;
- 如果不存在,输出一个整数 。
本题答案不唯一,任意一组合法的 都会被接受。
6
2
5
10
6
18
36
3 1
-1
13 7
-1
25 11
50 22
样例 1 解释
以第一组为例:,,两者相等,因此 合法。
第三组:,,合法。
第二组与第四组的答案是 ,即不存在满足条件的正整数对。
6
1
2
5
8
6
14
-1
3 1
-1
12 4
-1
-1
样例 2 解释
第四组:,,合法。
其余各组均不存在满足条件的正整数对。
样例 3
样例 4
数据范围
对于所有测试数据,保证:
- ;
- ;
- 若输出数对,则 。
子任务
本题共 20 个测试点,按测试点计分:
| 测试点 | 分值 | 每个测试点 | 特殊限制 |
|---|---|---|---|
| , | |||
| , | |||
| 无额外限制 |
每个测试点单独评分,全部测试点的得分之和即为本题得分。