CF1979B.XOR Sequences
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定两个不同的非负整数 x 和 y。考虑两个无限序列 a1,a2,a3,… 和 b1,b2,b3,…,其中
- an=n⊕x;
- bn=n⊕y。
这里,x⊕y 表示整数 x 和 y 的按位异或操作。
例如,当 x=6 时,序列 a 的前 8 个元素为:[7,4,5,2,3,0,1,14,…]。注意,元素的下标从 1 开始。
你的任务是求出序列 a 和 b 的最长公共子段的长度。换句话说,找到最大的正整数 m,使得存在某些 i,j≥1,满足 ai=bj,ai+1=bj+1,…,ai+m−1=bj+m−1。
† 序列 p 的一个子段是指 pl,pl+1,…,pr,其中 1≤l≤r。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤104)——表示测试用例的数量。接下来的每组测试用例包含一行,包含两个整数 x 和 y(0≤x,y≤109,x=y)——表示序列的参数。
输出格式
对于每组测试用例,输出一个整数,表示最长公共子段的长度。
输入输出样例
输入#1
4 0 1 12 4 57 37 316560849 14570961
输出#1
1 8 4 33554432
说明/提示
在第一个测试用例中,序列 a 和 b 的前 7 个元素如下:
a=[1,2,3,4,5,6,7,…]
b=[0,3,2,5,4,7,6,…]
可以证明不存在正整数 k 使得序列 [k,k+1] 在 b 中作为子段出现。因此答案为 1。
在第三个测试用例中,序列 a 和 b 的前 20 个元素如下:
a=[56,59,58,61,60,63,62,49,48,51,50,53,52,55,54,41, 40, 43, 42,45,…]
b=[36,39,38,33,32,35,34,45,44,47,46,41, 40, 43, 42,53,52,55,54,49,…]
可以证明,最长的公共子段之一是 [41,40,43,42],长度为 4。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?