#AdjustTest3. A+B Problem 3

A+B Problem 3

Background

这是一道系统测试题,用于检验本 OJ 的 IO 式交互评测流程是否正确。

Description

你想要水一道 A+B Problem. 但是你忘记 a,ba,b 是多少了,只记得它们都是 1b<a10001\leq b< a\leq 1000a,ba,b 都是整数。且 aabb 的正整数倍。

你可以通过询问系统(交互库)不超过 55 次问题来推理出 a+ba+b 的值。

与交互库进行交互的流程见 Format. 请严格按格式的形式进行交互。

Format

你可以通过如下输出来询问信息:

  • ? -,表示询问 aba-b 的值。
  • ? /,表示询问 ab\frac{a}{b} 的值。

若你进行了大于 55 次询问,或者你的询问不符合格式,交互库会立刻终止交互,并给出 WA 的评测结果。

每当你进行一次询问后,请换行并刷新输出流,再输入交互库给出的回答。否则,交互库不会检测到你的询问,从而不会给出回馈,导致你的程序等待一个不存在的交互库的输入使评测 TLE(或 RE 等其他结果)。刷新输出流的方式如下:

  • Python 语言中,在 print 中指定 flush=True,即 print(...,flush=True).
  • C/C++ 语言中,使用 fflush(stdout);.

当你得到 a+ba+b 的值时,通过如下输出来反馈答案:

  • ! x,其中 xxa+ba+b 的值。

同样地,在你给出回答后,请刷新输出流,否则交互库不会检测到你的回答,导致交互库未获得你的答案使评测 WA(或 TLE, RE 等结果)。

在你反馈答案后,交互库会根据答案正确与否进行判决,随后停止交互流程。你的程序在反馈答案之后不应该有其它操作,否则轻则忽略语句无事发生,重则影响评测流程导致 WA(或 RE, UKE 等结果)。

Samples

我们给出一种可能发生的交互情况。在本样例中,a=45,b=5a=45,b=5.

40
? -
! 50

在本样例中,最初没有任何数据可输入。选手代码先输出 ? - 提问,然后交互库将 ab=40a-b=40 的值提供至输入。随后选手代码得到结果 a+b=50a+b=50 并反馈。

不保证只通过 ab=40a-b=40 这条信息可以严谨求出 a+b=50a+b=50.

Limitation

对于所有数据,时间限制 1s,空间限制 32MiB.

Remark

对于 python,还有一种刷新输出流的方式为:首先 import sys,然后在每个输出语句后,添加语句 sys.stdout.flush().

对于 C++,还有一种刷新输出流的方式为 cout.flush();.