位运算题解
题目描述
题意理解
输入 T T T 组数据,每组数据含有两个整数 x , y x,y x,y,表示为二进制时,进行连续三位的反转操作,例如 ( 0 , 0 , 1 ) (0,0,1) (0,0,1) 反转为 ( 1 , 0 , 0 ) (1,0,0) (1,0,0) ;求最少经过几次反转操作,可以使得反转后的整数 x , y x,y x,y 相等;输出最少反准次数,如果无解,输出 − 1 -1 −1。
数据范围为: T [ 1 , 1 0 4 ] T \ [1,10^4] T [1,104], x , y [ 1 , 1 0 18 ] x,y \ [1,10^{18}] x,y [1,1018]
输出格式为: C a s e 1 : − 1 Case \quad 1: \quad -1 Case1:−1
原理分析
首先,反转操作的本质是隔位交换,具有如下性质:
- 反转交换对中位完全无影响。
- 反转交换时,邻位相互独立,反转步数可奇偶位分别计算。
其次,明确 x , y x,y x,y 最小反转次数后相等的条件:
- x , y x,y x,y 奇偶隔位上的 1 1