CF1780D.Bit Guessing Game

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

这是一道交互题。

Kira 和 Hayato 正在玩一种猜数游戏,Kira 想,Hayato 猜。

对于每一轮游戏,设 Kira 想的数为 nn。初始时,Kira 会给出 cntcnt,表示 nn 的二进制中 11 的个数。Hayato 只能进行以下两种操作:

  1. - x:修改操作。Kira 会将 nn 减去 xx(注意此处 nn 会被修改),并给出此时的 cntcnt。特别地,若 x>nx > n,则 Kira 直接获胜。
  2. ! x:查询操作。Kira 会将 xx 与最初的 nn 对比,若二者相同则 Hayato 获胜,反之 Kira 获胜,这轮游戏立即结束。

他们一共会进行 tt 轮游戏,你需要帮助 Hayato 在每一轮中获胜。同时,Kira 并不是一个很有耐心的人,因此你进行操作 1 的次数不能超过 3030。

注意样例中的空行只是为了显示更清晰,不会出现在实际评测中。

输入格式

第一行包含一个整数 t(1≤t≤500)t(1 \le t \le 500),表示有 tt 组测试用例。

对于每组测试用例,首行均为一个整数 cntcnt,表示 nn 的二进制中 11 的个数。

保证 1≤n≤1091 \le n \le 10^9。

输出格式

对于每个操作 1,输出单独的一行 - x;相应地,对于每个操作 2,输出单独的一行 ! n。

每个操作 1 完成后,交互库会输出一行一个整数 cntcnt,表示修改后的 nn 的二进制中 11 的个数。

再次强调,每一轮 Hayato 进行操作 1 的次数不能超过 3030。

确定初始时 nn 的值后,可进行操作 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测评打分。不知道怎么写?

首页