CF1999G1.Ruler (easy version)

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

本题是问题的简单版本。该版本与困难版之间的唯一区别是在这个版本中,你最多可以进行 1010 次查询。

这是一道交互题。

有一把有 10011001 个刻度的尺子,刻度分别为 1∼10011 \sim 1001。不幸的是,尺子丢失了一个刻度 xx(2≤x≤9992 \le x \le 999)。当你用尺子量一个长度为 yy 的物体时,尺子量出的结果为:

  • 若 y<xy < x,尺子将会量出正确的结果 yy。
  • 否则,尺子将会量出错误的结果 y+1y + 1。

你需要找出丢失的刻度 xx。你可以每次提供两个 11 至 10001000 内的整数 a,ba,b,你将会收到尺子量出的 aa 的长度与尺子量出的 bb 的长度之积。

你可以进行最多 1010 次询问。

输入格式

输入共一行一个整数 TT,代表数据组数。

输出格式

你可以输出 ? a b 以进行一次询问。a 和 b 的含义见上。随后,你将收到一个整数,表示尺子量出的 aa 的长度与尺子量出的 bb 的长度之积。

当你猜出 xx 后,你需要输出一行 ! x,x 为你猜出的 xx 值。

如果你的询问大于 1010 次或猜出的 xx 值不对,你将收到一行一个 -1。请立刻终止程序。

在进行一次询问后,你需要刷新缓冲区。否则,你可能会获得 ILE(Idleness Limit Exceeded)。刷新缓冲区方法如下:

  • 对于 C++:fflush(stdout) 或 cout.flush();
  • 对于 Java:System.out.flush();
  • 对于 Pascal:flush(output);
  • 对于 Python:stdout.flush()。

Translated by liuli688

输入输出样例

  • 输入#1

    2
    
    18
    
    25
    
    
    9999

    输出#1

    ? 3 5
    
    ? 4 4
    
    ! 4
    ? 99 100
    
    ! 100

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

首页