#SPJINT1B. 图灵测试

图灵测试

背景

这题本来是 2023.10.28 新生赛 4 的 A 题。

来自 Ocean 的介绍:所谓 "交互",就是做题者和评测系统之间的对话。在确定答案之前,你输出的每一份符合格式的内容都代表你向评测机发起了一次 询问,评测机会以输入的形式给出符合题意的回复。然后你只需按照题目所给信息,判断 是否已经得出答案 或者 还需继续询问 即可。当然,你需要满足某些题的特定需求,比如说询问次数不可以超过 3232

来自 洛谷 的介绍:交互题 即用户提交程序,通过出题人提供的交互库,与判题程序(SPJ)进行交互并获得输入、解答问题。

注意,请在输出之后,加一行 flush\mathtt{flush}

下面给出 C,C++,Java,Python\mathtt{C, C++, Java, Python} 的输出方式:

  1. C\mathtt{C}

    printf("! 233");
    fflush(stdout);
    
  2. C++\mathtt{C++}

    cout << "!" << 233 << '\n';
    cout.flush();
    
  3. Java\mathtt{Java}

    System.out.println("! 233");
    System.out.flush();
    
  4. Python\mathtt{Python}

    print("! 233")
    stdout.flush()
    

说明

如你所见,Ocean 最近在捣鼓对 OJ 的爬虫,并进行的很顺利。

可是,并不是所有网站都是那么好爬的,比如说接下来的这个带有 "图灵测试" 的网站。

为了防止出现技术化的描述,本题只给出具体的说明,你可以自行脑补:

  1. 首先,网站会给 Ocean 一个序列 aa,用于校验;
  2. 然后,Ocean 需要给网站一个运算符,为 +, * 这两个运算符的任意一个,代表询问;
  3. 接着,网站会给出一个式子,格式为 数字 + Ocean给出的运算符 + 数字。比如说,如果 Ocean 给了网站 *,且式子的两个数字分别为 12, 24,那么网站给出的式子是 12*24
  4. 最后,Ocean 需要校验式子的合法性。定义如果式子中的两个数字都在一开始给定的序列 aa 中,那么式子合法。如果合法,那么 Ocean 会给网站式子的结果,否则 Ocean 会给网站一个 -1

你可以帮 Ocean 完成这个简单到让龟神小脑萎缩的流程操作么?

交互

本题有多组测试用例。

首先,你需要读入一行整数 tt,代表测试用例的数量。

接下来,对于每个用例,你需要先读入两行内容:

  1. 第一行给定一个整数 nn,代表序列 aa 的长度;
  2. 第二行给定 nn 个数字,第 ii 个数字代表 aia_i

然后,对于询问,你需要按照 ? c 的格式输出,其中 c 为你需要输出的运算符。具体来说,你只能输出 ? +? * 的其中一个。

  • 在输出之后,你需要读入一个字符串 vv。如果 vvok,那么代表检查合法,你可以继续接下来的操作;否则代表输出不合法,此时 你必须立即终止你的程序,以得到 Wrong Answer 判定,否则你将会得到除 Accepted 之外的其他任意评测结果,诸如 Runtime Error

接着,你需要读入一个字符串,代表网站给出的式子。

最后,对于回答最终的结果,你需要按照 ! x 的格式输出,其中 x 为你的答案。

具体来说,如果你判断其合法,并且算出答案为 36,你需要输出 ! 36;如果你判断其不合法,你需要输出 ! -1

  • 在输出之后,你需要读入一个字符串 vv。如果 vvok,那么代表答案正确,你可以继续接下来的操作;否则代表答案错误,此时 你必须立即终止你的程序,以得到 Wrong Answer 判定,否则你将会得到除 Accepted 之外的其他任意评测结果,诸如 Runtime Error

如果你的输出格式有问题,或者你没有在输出后 flush\mathtt{flush},你将会得到 Rumtime Error: Killed

如果你还是不知道怎么交互,可以开翻译阅读一下 codeforces 的官方介绍:

Interactive Problems: Guide for Participants - Codeforces

样例

样例输入1

2
5
12 24 3 4 5

ok
12*24

ok
3
1 2 3

ok
1*9

ok

样例输出1

? *

! 288


? *

! -1

第一组样例的解释已在题面中给出。

提示

1t1031 \leq t \leq 10 ^ 3

2n2×105,1ai1002 \leq n \leq 2 \times 10 ^ 5, 1 \leq a_i \leq 100

保证所有样例的 nn 总和不超过 2×1052 \times 10 ^ 5