A. 平衡数对

    传统题 文件IO:pair 1000ms 256MiB

平衡数对

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

33DAI 要回答 tt 次询问。每次给定一个正整数 xx,请你求出任意一对正整数 a,ba, b,满足

a⊕b=a+b2=xa \oplus b = \frac{a + b}{2} = x

其中 ⊕\oplus 表示按位异或:把两个整数写成二进制后逐位比较,该位相同则结果的这一位是 00,不同则是 11。在 C++ 中,按位异或写成 ^(例如 a ^ b)。

  • 如果不存在这样的数对,请输出 −1-1;
  • 如果存在多组,输出任意一组即可。

输入格式

从文件 pair.in 读入数据。

输入的第一行包含一个正整数 tt,表示询问组数。

接下来 tt 行,每行包含一个正整数 xx,表示一次询问。

输出格式

输出到文件 pair.out。

对于每组询问,输出一行:

  • 如果存在满足条件的数对,输出两个正整数 aa 与 bb,用一个空格分隔;
  • 如果不存在,输出一个整数 −1-1。

本题答案不唯一,任意一组合法的 (a,b)(a, b) 都会被接受。

6
2
5
10
6
18
36
3 1
-1
13 7
-1
25 11
50 22

样例 1 解释

以第一组为例:3⊕1=23 \oplus 1 = 2,3+12=2\frac{3 + 1}{2} = 2,两者相等,因此 (3,1)(3, 1) 合法。

第三组:13⊕7=1013 \oplus 7 = 10,13+72=10\frac{13 + 7}{2} = 10,合法。

第二组与第四组的答案是 −1-1,即不存在满足条件的正整数对。

6
1
2
5
8
6
14
-1
3 1
-1
12 4
-1
-1

样例 2 解释

第四组:12⊕4=812 \oplus 4 = 8,12+42=8\frac{12 + 4}{2} = 8,合法。

其余各组均不存在满足条件的正整数对。

样例 3

见 pair3.in 与 pair3.ans。

样例 4

见 pair4.in 与 pair4.ans。

数据范围

对于所有测试数据,保证:

  • 1≤t≤1041 \le t \le 10^4;
  • 1≤x≤2291 \le x \le 2^{29};
  • 若输出数对,则 1≤a,b≤2321 \le a, b \le 2^{32}。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 t≤100t \le 100,x≤1000x \le 1000
7∼127 \sim 12 t≤104t \le 10^4,x≤220x \le 2^{20}
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。

【评测】三三信奥国庆模拟赛 CSP-S 第一场

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-10-1 8:30
结束于
2026-10-4 8:30
持续时间
3.5 小时
主持人
参赛人数
28