#3972. Round-2 还是位运算
Round-2 还是位运算
Description
题目描述
给你两个不同的非负整数 和 。考虑两个无穷序列 和 ,其中
- ;
- .
这里, 表示整数 和 的异或运算。
例如,有了 ,序列 的前 个元素将如下所示: .请注意,元素的索引是从 开始的。
你的任务是找出序列 和 的最长公共子序列 的长度。换句话说,在某个 中,找出 $a_i = b_j, a_{i + 1} = b_{j + 1}, \ldots, a_{i + m - 1} = b_{j + m - 1}$ 的最大整数 。
序列 的子序列是序列 ,其中 .
输入格式
每个测试由多个测试用例组成。第一行包含一个整数 ( ) - 测试用例数。测试用例说明如下。
每个测试用例的唯一一行包含两个整数 和 ( ) - 序列参数。
输出格式
对于每个测试用例,输出一个整数 - 最长公共子段的长度。
4
0 1
12 4
57 37
316560849 14570961
1
8
4
33554432
说明/提示
注
在第一个测试用例中,序列 和 的第一个 元素如下:
可以证明不存在一个正整数 使得序列 作为子序列出现在 中。因此答案是 。
在第三个测试案例中,序列 和 的第一个 元素如下:
$a = [56, 59, 58, 61, 60, 63, 62, 49, 48, 51, 50, 53, 52, 55, 54, \textbf{41, 40, 43, 42}, 45, \ldots]$
$b = [36, 39, 38, 33, 32, 35, 34, 45, 44, 47, 46, \textbf{41, 40, 43, 42}, 53, 52, 55, 54, 49, \ldots]$
可以证明,最长的公共子序列之一是长度为 的子序列 。
的数据,
的数据,