#3767. XOR Sequences
XOR Sequences
题目描述
给定两个互不相同的非负整数 和 ,我们定义两条无限序列 和 如下:
- ;
- 。
这里 表示按位异或运算。例如,当 时,序列 的前 8 项为
$$[\,1\oplus6,\,2\oplus6,\,3\oplus6,\,4\oplus6,\,5\oplus6,\,6\oplus6,\,7\oplus6,\,8\oplus6,\dots] = [7,4,5,2,3,0,1,14,\dots]. $$(注意这里下标从 1 开始。)
你的任务是:求出序列 与序列 的最长公共子段长度。也就是说,找出最大的正整数 ,使得存在 使得
$$a_i = b_j,\; a_{i+1} = b_{j+1},\;\dots,\;a_{i+m-1} = b_{j+m-1}. $$子段(subsegment)指的是一个连续的片段 ,其中 。
输入格式
第一行包含一个整数 (),表示测试用例的数量。 接下来描述 个测试用例,每个测试用例占一行,包含两个整数 和 (,且 )。
输出格式
对每个测试用例,输出一个整数——序列 与序列 的最长公共子段长度。
4
0 1
12 4
57 37
316560849 14570961
1
8
4
33554432
说明
-
样例 1: 当 时,
$ a=[1,2,3,4,5,6,7,\dots],\quad b=[0,3,2,5,4,7,6,\dots]. $
可以证明不存在长度大于 1 的连续整数子段两序列同时包含,故答案为 1。
-
样例 3: 当 时,序列前若干项为
$ a=[56,59,58,61,60,63,62,49,48,51,50,53,52,55,54,\mathbf{41,40,43,42},45,\dots] $
$ b=[36,39,38,33,32,35,34,45,44,47,46,\mathbf{41,40,43,42},53,\dots] $
它们的公共子段 长度为 4。
提示
- 序列下标从 1 开始。
- 异或运算 是对两个整数按二进制位逐位做“不同为 1、相同为 0” 的运算。
- 由于序列是无限的,实际只需关注能构成最长公共子段的那一段即可。
- ,。