CFCF2190F.Xor Product

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

对于非负整数 x,yx, y 和正整数 kk,定义 S(x,y,k)S(x, y, k) 为所有 (x+i)(y+j)(x + i) \oplus (y + j) 的集合,其中 0i,j<k0 \le i, j < k。形式化地:

S(x,y,k)={(x+i)(y+j)0i,j<k}S(x, y, k) = \{ (x + i) \oplus (y + j) \mid 0 \le i, j < k \}

这里 \oplus 表示按位异或运算。

定义 f(x,k)f(x, k) 为对于所有非负整数 yy(即 y0y \ge 0),集合 S(x,y,k)S(x, y, k) 的最大可能大小。

给定整数 xxkk,计算 f(x,k)f(x, k)

输入格式

本题包含多组测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例数量。

接下来的 tt 行,每行包含两个整数 xxkk1x,k10171 \le x, k \le 10^{17})。

输出格式

对于每个测试用例,输出一个整数,即 f(x,k)f(x, k) 的值。

输入输出样例

  • 输入#1

    6
    67 1
    7 3
    100 12
    1 1043
    1526 1043
    88946092640567295 100000000000000000

    输出#1

    1
    7
    32
    3128
    4167
    398158383604301822

说明/提示

在第一个样例中,由于 k=1k=1,无论 yy 取何值,集合 SS 总是恰好包含一个元素。例如,若选取 y=69y=69,则有 S(67,69,1)={6769}={6}S(67, 69, 1) = \{67 \oplus 69\} = \{6\},因此 S(x,y,k)=1|S(x, y, k)| = 1

在第二个样例中,x=7x=7k=3k=3。最优的 yy 取值是 88(x+i)(y+j)(x + i) \oplus (y + j) 的所有值为:

[78,79,710,88,89,810,98,99,910][7 \oplus 8, 7 \oplus 9, 7 \oplus 10, 8 \oplus 8, 8 \oplus 9, 8 \oplus 10, 9 \oplus 8, 9 \oplus 9, 9 \oplus 10]

简化后是 [15,14,13,0,1,2,1,0,3][15, 14, 13, 0, 1, 2, 1, 0, 3]。不同的取值为 S(7,8,3)={0,1,2,3,13,14,15}S(7,8,3)=\{0,1,2,3,13,14,15\},其大小为 77。可以证明没有其他 yy 能得到更大的集合。实际上选择 yy 很重要,如果你取 y=22y=22,则 S(7,22,3)={16,17,30,31}S(7,22,3)=\{16,17,30,31\},其大小仅为 44,并不最优。

在第六个样例中,经过无数次计算,我们终于推算出最优的 yy278302368699121665278\,302\,368\,699\,121\,665,最终的答案是 398158383604301822398\,158\,383\,604\,301\,822。证明过程留作读者的一个简单练习。

首页