CF2036G.Library of Magic

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这是一个交互题。

奥森福特学院的超自然现象系开启了魔法图书馆,馆内收藏了雷达尼亚最伟大的巫师们的著作——共 nn 种类型的书籍(3≤n≤10183 \leq n \leq 10^{18}),编号从 11 到 nn。每本书的类型编号都标在书脊上。此外,每种类型的书在图书馆中恰好有两本!而你被任命为图书管理员。

某天夜里,你被奇怪的声音惊醒,看到一个生物正从窗户离开。你注意到神秘小偷的背包里露出了三本颜色各异的厚重书籍。在你开始寻找它们之前,你决定计算出这些书脊上写着的数字 aa、bb 和 cc。这三个数字互不相同。

因此,你现在面对的是一组无序的书籍集合,其中包含编号为 aa、bb、cc 的书各一本,其余编号 11 到 nn 中除了 aa、bb、cc 以外的每个编号的书各有两本。你需要找出这三个值 aa、bb、cc。

由于你所在的不是普通图书馆,而是魔法图书馆,你只能使用一种查询魔法来检查书籍是否在原位:

  • “xor l r”——按位异或查询,参数为 ll 和 rr。设 kk 为图书馆中编号大于等于 ll 且小于等于 rr 的书的数量。你将会得到 v1⊕v2⊕...⊕vkv_1 \oplus v_2 \oplus ... \oplus v_k 的结果,其中 v1...vkv_1 ... v_k 是这些书脊上的编号,⊕\oplus 表示按位异或运算。

由于你的魔法能力有限,你最多只能进行 150150 次查询。

输入格式

第一行输入一个整数 tt(1≤t≤3001 \le t \le 300),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(3≤n≤10183 \leq n \leq 10^{18}),表示图书的类型数。

输出格式

每个测试用例的交互从读取整数 nn 开始。

然后你可以进行最多 150150 次查询。

每次查询,输出格式为 "xor l r"(不带引号),其中 1≤l≤r≤n1 \leq l \leq r \leq n。每次查询后,读取一个整数,表示该查询的结果。

当你确定答案后,输出 "ans a b c"(不带引号),其中 aa、bb、cc 是你找到的答案,可以任意顺序输出。

交互器是非自适应的,即答案在你进行查询前就已确定,不会根据你的查询改变。

如果你进行了 150150 次查询后,再进行任何查询,返回的答案将为 −1-1。收到该答案后应立即终止程序,否则会收到“WA”(Wrong Answer)判定。

每次输出查询后,记得输出换行并刷新输出缓冲区,否则会收到“IL”(Idleness limit exceeded)判定。刷新缓冲区的方法如下:

  • C++:fflush(stdout) 或 cout.flush()
  • Java:System.out.flush()
  • Pascal:flush(output)
  • Python:stdout.flush()
  • 其它语言请参考相关文档。

Hack 格式

如需制作 Hack,使用如下格式:

第一行输入一个整数 tt(1≤t≤3001 \leq t \leq 300),表示测试用例数量。

每个测试用例一行,包含四个整数 nn、aa、bb、cc(3≤n≤10183 \leq n \leq 10^{18},1≤a,b,c≤n1 \le a, b, c \le n),分别表示图书类型数和被盗书籍的编号。aa、bb、cc 必须互不相同。

输入输出样例

  • 输入#1

    2
    6
    
    0
    
    2
    
    3
    
    5
    
    3

    输出#1

    xor 1 1
    
    xor 2 2
    
    xor 3 3
    
    xor 4 6
    
    ans 2 3 5
    
    ans 1 2 3

说明/提示

在第一个测试用例中,失窃后的图书馆书籍情况如下:

现在考虑以下查询的答案:

  • 对于查询 "xor 1 1",你会得到 1⊕1=01 \oplus 1 = 0。有两本编号为 11 的书满足条件。
  • 对于查询 "xor 2 2",你会得到 22,因为只有一本编号为 22 的书满足条件。
  • 对于查询 "xor 3 3",你会得到 33。
  • 对于查询 "xor 4 6",你会得到 4⊕6⊕4⊕5⊕6=54 \oplus 6 \oplus 4 \oplus 5 \oplus 6 = 5。

在第二个测试用例中,只有 33 种类型的书,很容易猜出缺失的编号为 11、22 和 33。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页