#JSUTFPC2025I. Bitwise Operation——位运算
Bitwise Operation——位运算
题面描述
Timothy 是一位年轻的计算机科学家,最近在研究二进制运算的奇妙性质。他在整理祖父留下的旧手稿时,发现了一个神秘的数学公式:
其中 表示 "平衡数",位运算符号 和 分别表示按位与,按位或运算。在主流编程语言中使用 & 表示按位与,例如 int c = a \& b 表示为 ,而按位或同理。
准确来说,按位与运算符是这样的规则:只有对应的两个二进位都为 1 时结果位为 1 否则为 0;举个例子:计算(右下角表示为 10 进制或 2 进制)
$$5_{(10)}\ \&\ 9_{(10)} = 0101_{(2)}\ \&\ 1001_{(2)}=0001_{(2)}=1_{(10)} $$同理,按位或表示当两个对应位中至少有一个为1时,结果位为1,否则为0。
Timothy 猜测,这个公式可能隐藏着某种二进制位运算的对称性,如果能找到满足条件的最小正整数 ,就能解开笔记中的下一段密码。
但是,并不是所有的 都能找到对应的 ,如果不存在这样的 ,就说明这个 与“平衡数”无缘,需要返回 。
请你帮助 Timothy 编写程序,对给定的 ,找出最小的正整数 ,或者判断它不存在。
输入描述
包含一行 2 个数字整数分别表示 , 用空格分开。
输出描述
包含一个整数,表示 。
样例
114514 1919810
1805296
1919810 114514
-1