CF2077B.Finding OR Sum
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
ALTER EGO - Yuta Imai vs Qlarabelle
这是一道交互题。
存在两个隐藏的非负整数 x 和 y(0≤x,y<230)。你最多可以提出 2 次以下形式的询问:
- 选择一个非负整数 n(0≤n<230)。评测系统将返回 (n∣x)+(n∣y) 的值,其中 ∣ 表示按位或运算。
此后,评测系统将给出另一个非负整数 m(0≤m<230)。你必须正确回答 (m∣x)+(m∣y) 的值。
输入格式
每个测试包含多个测试用例。第一行输入测试用例数量 t(1≤t≤104)。接下来描述每个测试用例。
输出格式
已选择两个隐藏整数 x 和 y(0≤x,y<230)。注意 x 和 y 可能因不同测试用例而异。
本题的交互器是非自适应的。换句话说,整数 x 和 y 在交互过程中不会改变。
要提出询问,请选择一个整数 n(0≤n<230)并在一行中仅输出该整数 n。
你将收到一个整数,即 (n∣x)+(n∣y) 的值。
你最多只能提出 2 次此类询问。
完成询问后,在一行中输出 "!"。你将收到一个整数 m(0≤m<230)。注意 m 的值在交互开始前也已确定。
你必须在一行中仅输出 (m∣x)+(m∣y) 的值。注意此行不被视为询问,不计入询问次数统计。
完成此操作后,继续处理下一个测试用例。
如果在交互过程中提出超过 2 次询问,你的程序必须立即终止,并得到 Wrong Answer 的判定结果。否则,由于你的解决方案将继续从已关闭的流中读取数据,可能会得到任意判定结果。
在输出询问后请勿忘记换行并刷新输出缓冲区。否则你将得到 Idleness limit exceeded。为此,请使用:
- C++ 中的 fflush(stdout) 或 cout.flush();
- Java 中的 System.out.flush();
- Pascal 中的 flush(output);
- Python 中的 stdout.flush();
- 其他语言请参考相关文档。
输入输出样例
输入#1
2 3 4 1 0 1
输出#1
0 1 ! 4 0 ! 2
说明/提示
示例交互
在第一个测试中,交互过程如下:
| 解决方案输出 | 评测系统输出 | 说明 |
|---|---|---|
2 |
共有 2 个测试用例 | |
| 第一个测试用例中 x=1 且 y=2 | ||
0 |
解决方案询问 (0∣1)+(0∣2) | |
3 |
评测系统返回 3 | |
1 |
解决方案询问 (1∣1)+(1∣2) | |
4 |
评测系统返回 4 | |
! |
解决方案请求 m 的值 | |
1 |
评测系统返回 m=1 | |
4 |
解决方案根据先前询问得知 (1∣x)+(1∣y)=4 | |
| 第二个测试用例中 x=0 且 y=0 | ||
0 |
解决方案询问 (0∣0)+(0∣0) | |
0 |
评测系统返回 0 | |
! |
解决方案请求 m 的值 | |
1 |
评测系统返回 m=1 | |
2 |
解决方案推断出 x=y=0,因此返回 (1∣0)+(1∣0)=2 |
注意示例输入输出中的空行仅为清晰展示,实际交互中不会出现。
注意示例输入输出中的空行仅为清晰展示,实际交互中不会出现。
Hacks
要发起 hack,请遵循以下测试格式:
第一行包含测试用例数量 t(1≤t≤104)。接下来描述每个测试用例。
每个测试用例的第一行且唯一一行包含三个整数 x,y,m(0≤x,y,m<230)。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?