CF1780D.Bit Guessing Game
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一道交互题。
Kira 和 Hayato 正在玩一种猜数游戏,Kira 想,Hayato 猜。
对于每一轮游戏,设 Kira 想的数为 n。初始时,Kira 会给出 cnt,表示 n 的二进制中 1 的个数。Hayato 只能进行以下两种操作:
- x:修改操作。Kira 会将 n 减去 x(注意此处 n 会被修改),并给出此时的 cnt。特别地,若 x>n,则 Kira 直接获胜。! x:查询操作。Kira 会将 x 与最初的 n 对比,若二者相同则 Hayato 获胜,反之 Kira 获胜,这轮游戏立即结束。
他们一共会进行 t 轮游戏,你需要帮助 Hayato 在每一轮中获胜。同时,Kira 并不是一个很有耐心的人,因此你进行操作 1 的次数不能超过 30。
注意样例中的空行只是为了显示更清晰,不会出现在实际评测中。
输入格式
第一行包含一个整数 t(1≤t≤500),表示有 t 组测试用例。
对于每组测试用例,首行均为一个整数 cnt,表示 n 的二进制中 1 的个数。
保证 1≤n≤109。
输出格式
对于每个操作 1,输出单独的一行 - x;相应地,对于每个操作 2,输出单独的一行 ! n。
每个操作 1 完成后,交互库会输出一行一个整数 cnt,表示修改后的 n 的二进制中 1 的个数。
再次强调,每一轮 Hayato 进行操作 1 的次数不能超过 30。
确定初始时 n 的值后,可进行操作 2 验证答案。
注意:每次输出任意操作后需要刷新输出。这里给出部分语言刷新输出的代码:
| 语言 | 代码 |
|---|---|
| C++ | fflush(stdout) 或 cout.flush() |
| Java | System.out.flush() |
| Pascal | flush(output) |
| Python | stdout.flush() |
输入输出样例
输入#1
3 1 0 1 1 0 2 1 0
输出#1
- 1 ! 1 - 1 - 1 ! 2 - 2 - 1 ! 3
输入解题思路,AI测评打分。不知道怎么写?