C. 家庭作业 II

    交互题 1000ms 256MiB

家庭作业 II

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

这是一道交互题。 刚刚从全国各地打完xcpc回到学校的Orange发现,自己的学习通已经堆满了无数的作业。更可怕的是,由于上个月Orange并没有在学校上课,导致他所有的课程知识都不会。所幸,Orange发现作业仅有多项选择题,且可以多次提交。眼下,Deadline即将降临,Orange想请你帮他写一个程序,帮助他完成作业。

最开始,Orange将告诉你题目个数 nn,你需要在不超过 33提交的前提下,确定最终的答案,并报告给Orange。

请注意本题题目描述中的提交报告的区别!

交互形式

本题支持如下交互形式。

  • ? AC AB ACD BCD ... D A B 表示提交一次你的答案,答案包含一行,由 n+1n + 1个字符串构成,第一个字符串固定为 ?,随后 nn 个字符串,以空格隔开。第 ii 个字符串表示你第 ii 题的答案,答案仅由ABCD四个大写字母构成,且不允许重复。随后,你将得到一个长度为 nn 的序列 PP 作为输入,其中 PiP_i 为你第 ii 题的评测情况,若 Pi=2P_i = 2 则表示该题完全正确,若 Pi=1P_i = 1 则表示该题漏选了选项(部分正确),若 Pi=0P_i = 0 则表示答案包含了错误的选项(答案错误)。
  • ! AC AB ACD BCD ... D A B 表示向Orange报告你的答案。

交互说明

  1. 在交互开始前,你将会得到一个输入,为整数 nn,表示Orange告诉你的题目数量。随后,在交互开始时,您应先提交答案。
  2. 本题的交互是非实时的,答案为预先确定的,且不会发生改变。
  3. 要进行提交答案,请输出一行格式为 ? AC AB ACD BCD ... D A B 的内容。我们会向您的程序输入一个整数序列,表示本次查询的结果。
  4. 当你确定好你的答案时,请使用输出一行格式为 ! AC AB ACD BCD ... D A B 的内容,表示向Orange报告你的答案。提交答案不算作查询次数的一部分,请注意,你应该在回答答案后立刻终止您的程序
  5. 如果你的程序长时间没有应答(可能是你关闭了cin以及cout的同步流),或者询问了非法的数据或者提交了错误的答案以及询问次数超过 33,程序会返回答案错误 或者 运行错误
  6. 输出查询后,不要忘记输出行尾并刷新输出。否则,您可能会收到超过闲置限制的判定。为此,请使用:
  • C++ 中使用 fflush(stdout)cout.flush()
  • Java 中的 System.out.flush()
  • Pascal 中的 flush(output)
  • Python 中的 stdout.flush()
  • \cdots

特别提醒! 在回答交互性问题的时候,请不用关闭cin以及cout的同步流,避免交互程序无法收到您的交互请求。同时,如果你使用endl作为刷新缓冲区语句,请不用使用#define endl \n

输入格式

在交互开始前

输入仅包含一行,包含一个整数 nn,表示题目数量。

在交互过程中

输入一个序列 PP,表示对于你提交的判题情况。

数据范围

n103n \le 10^3

题目保证每个题仅有4个选项 ABCD

输出格式

在交互过程中

您的程序支持如下两种交互方式:

  • 提交答案:请输出出形如? AC AB ACD BCD ... D A B格式的询问指令。
  • 报告答案:请输出形如! AC AB ACD BCD ... D A B格式的指令来报告答案。

请不要输出多余的行末空格!

范围限制

对于每次提交答案,你应该保证提交的答案串的长度等于 nn。 对于报告答案,你应该保证答案仅包含ABCD四个字母。

样例 #1

样例输入 #1

3

1 2 0

0 2 1

2 2 1

样例输出 #1

? A B C

? AB B A

? AC B A

! AC B AD

2025 SYNU 十一月周赛 Round III (Div 3)

未参加
状态
已结束
规则
XCPC
题目
5
开始于
2025-11-20 19:15
结束于
2025-11-20 21:15
持续时间
2 小时
主持人
参赛人数
45