[ABC347] D - Popcount and XOR

D - Popcount and XOR

Time Limit: 2 sec / Memory Limit: 1024 MB

分数:400分

题面

给定非负整数 。确定是否存在一对非负整数 ,满足以下五个条件。如果存在这样的一对数,打印其中一个。

这里, 表示按位异或。

如果有多对数满足条件,可以打印其中任意一对。

什么是popcount?

对于非负整数 ,popcount()表示 的二进制表示中数字1的个数。更准确地说,对于满足 的非负整数 ,我们有

例如,十进制数13的二进制表示是 1101,所以popcount(13)=3。

什么是按位异或?

对于非负整数 ,按位异或 定义如下:

  • 的二进制表示中,位 )上的数字为1,则 的二进制表示中,位 )上的数字中只有一个为1,否则为0。

例如,十进制数9和3的二进制表示分别是 10010011,所以 (二进制表示为 1010)。

限制条件

  • 所有输入均为整数。

输入

输入在标准输入中以下列格式给出:

输出

如果存在一对满足条件的非负整数,选择其中一对 并按照顺序打印 ,中间用一个空格隔开。如果不存在这样的一对数,打印 -1


输入样例 1

3 4 7

输出样例 1

28 27

数对满足条件。其中, 的二进制表示分别为 1110011011

  • 的二进制表示为 11100,所以
  • 的二进制表示为 11011,所以
  • 的二进制表示为 00111,所以

如果有多对满足条件的非负整数,你可以打印其中任意一对,例如 42 45


输入样例 2

34 56 998244353

输出样例 2

-1

没有满足条件的非负整数对。


输入样例 3

39 47 530423800524412070

输出样例 3

540431255696862041 10008854347644927

请注意,需要打印的值可能无法用 位整数表示。

0条搜索结果。