#CF2077B. 寻找 OR 的和
寻找 OR 的和
B. 寻找 OR 的和
每个测试的时间限制:2 秒
内存限制:256 MB
题目描述
有两个隐藏的非负整数 和 ()。
你可以进行不超过 2 次如下形式的询问:
- 选择一个非负整数 ()。
- 评测机会返回 的值,其中 表示按位或运算。
询问结束后,评测机会再给你另一个非负整数 ()。
你需要输出正确的 的值。
输入
每个测试包含多个测试用例。
第一行包含测试用例的数量 ()。
接下来是每个测试用例的交互过程。
交互说明
每个测试用例中,有两个隐藏的整数 和 ()。
注意 和 在不同测试用例中可能不同。
本题的交互器是非自适应的,即 和 在交互过程中不会改变。
- 询问:输出一行一个整数 ()。
- 回答:你会收到一个整数,表示 的值。
你最多可以进行 2 次询问。
询问结束后,输出一行 !。
然后你会收到一个整数 ()。
你必须输出一行,表示 的值。
这一行不算作询问,不计入询问次数。
之后,继续下一个测试用例。
如果你在一次交互中进行了超过 2 次询问,你的程序必须立即终止,结果将是 Wrong Answer。
否则,如果继续从关闭的流中读取,可能会得到任意评测结果。
输出格式要求
每次询问后,请刷新输出缓冲区:
- C++:
fflush(stdout)或cout.flush() - Java:
System.out.flush() - Pascal:
flush(output) - Python:
stdout.flush() - 其他语言请参考文档。
Hack 格式
要 hack,请按照以下格式:
第一行:
接下来 行,每行三个整数 ()。
示例
输入:
2
3
4
1
0
1
输出:
0
1
!
4
0
!
2
注意:示例中的空行仅为清晰起见,实际交互中不会出现空行。
样例解释
-
第一个测试用例:
- 询问 ,得到
- 询问 ,得到
- 输出
!,收到 - 输出
-
第二个测试用例:
- 询问 ,得到
- 输出
!,收到 - 输出