#P1510. Homework
Homework
Homework
题目描述
这是一道交互题。 刚刚从全国各地打完xcpc回到学校的Orange发现,自己的学习通已经堆满了无数的作业。更可怕的是,由于上个月Orange并没有在学校上课,导致他所有的课程知识都不会。所幸,Orange发现作业仅有选择题,且可以多次提交。眼下,Deadline即将降临,Orange想请你帮他写一个程序,帮助他完成作业。
最开始,Orange将告诉你题目个数 ,你需要在不超过 次提交的前提下,确定最终的答案,并报告给Orange。
请注意本题题目描述中的提交和报告的区别!
交互形式
本题支持如下交互形式。
? ABCD....ABCD表示提交一次你的答案,答案为一个仅包含ABCD四个字母构成的字符串,依次代表每个题的答案。提交后,你将收到一个仅由01构成的长度为 的字符串,表示每个题的正确情况,1表示正确,反之表示错误。! ABCD....ABCD表示向Orange报告你的答案。
交互说明
- 在交互开始前,你将会得到一个输入,为整数 ,表示Orange告诉你的题目数量。随后,在交互开始时,您应先提交答案。
- 本题的交互是非实时的,答案为预先确定的,且不会发生改变。
- 要进行提交答案,请输出一行格式为
? ABCD....的内容。我们会向您的程序输入一个01串,表示本次查询的结果。 - 当你确定好你的答案时,请使用输出一行格式为
! ABCD...的内容,表示向Orange报告你的答案。提交答案不算作查询次数的一部分,请注意,你应该在回答答案后立刻终止您的程序。 - 如果你的程序长时间没有应答(可能是你关闭了cin以及cout的同步流),或者询问了非法的数据或者提交了错误的答案以及询问次数超过 次,程序会返回
答案错误或者运行错误。 - 输出查询后,不要忘记输出行尾并刷新输出。否则,您可能会收到超过闲置限制的判定。为此,请使用:
- C++ 中使用
fflush(stdout)或cout.flush(); - Java 中的
System.out.flush(); - Pascal 中的
flush(output); - Python 中的
stdout.flush();
特别提醒! 在回答交互性问题的时候,请不用关闭cin以及cout的同步流,避免交互程序无法收到您的交互请求。同时,如果你使用
endl作为刷新缓冲区语句,请不用使用#define endl \n。
输入格式
在交互开始前
输入仅包含一行,包含一个整数 ,表示题目数量。
在交互过程中
输入一个01串 ,表示对于你提交的正确情况。
数据范围
题目保证每个题仅有4个选项。
输出格式
在交互过程中
您的程序支持如下两种交互方式:
- 提交答案:请输出出形如
? ABCD....格式的询问指令。 - 报告答案:请输出形如
! ABCD....格式的指令来报告答案。
范围限制
对于每次提交答案,你应该保证提交的答案串的长度等于 。
对于报告答案,你应该保证答案仅包含ABCD四个字母。
样例 #1
样例输入 #1
3
? ABC
? AAC
? ADC
! ACC
样例输出 #1
101
101
101