CF1705F Mark and the Online Exam

题目描述

Mark 正在管理一场包含 $n$ 道判断题的在线考试。然而,他丢失了所有的答案。现在他需要在客户发怒之前找回这些答案。 幸运的是,他可以访问判题系统。因此,对于每一次查询,你可以提交 $n$ 道题目的答案,判题系统会返回其中有多少题答对了。 他时间紧迫,所以最多只能使用判题系统 $675$ 次。请帮助 Mark 找出所有题目的答案。 注意,答案在查询前就已经固定,不会因为你的查询而改变。

输入格式

输入的第一行包含一个整数 $n$($1\leq n\leq 1000$),表示题目的数量。

输出格式

读入 $n$ 之后,你可以开始向判题系统进行查询。每次查询时,输出一行长度为 $n$ 的字符串 $s$,仅包含字母 'T' 和 'F'。 - $s_i = $ 'T' 表示你认为第 $i$ 道题的答案为 true。 - $s_i = $ 'F' 表示你认为第 $i$ 道题的答案为 false。 每次成功查询后,你需要读入一个整数 $k$($0\leq k\leq n$),表示答对的题目数量。如果你读入了 $n$,说明你已经找到了所有答案,此时不应再进行任何查询。 如果你读入的 $k = -1$,说明你进行了非法查询或已超过查询次数限制。此时应立即退出,否则会收到 Wrong answer 的判定。否则,如果你继续从已关闭的流中读取,可能会得到任意判定。 每次输出查询后,不要忘记输出换行并刷新输出缓冲区,否则会收到 Idleness limit exceeded 的判定。具体操作如下: - C++:使用 fflush(stdout) 或 cout.flush(); - Java:使用 System.out.flush(); - Pascal:使用 flush(output); - Python:使用 stdout.flush(); - 其它语言请参考相关文档。 Hack 格式 Hack 时请使用以下格式: 第一行包含一个整数 $n$($1\leq n\leq 1000$),表示题目数量。 第二行包含一个长度为 $n$ 的字符串 $s$,仅包含 'T' 和 'F',表示答案。

说明/提示

示例中的空行仅用于帮助你理解交互过程,你无需输出它们。 在第一个样例中,有 $3$ 道题,答案分别为 'true'、'true'、'false'。 - 第一次查询,猜测答案为 'false'、'true'、'true',只有第 $2$ 题猜对了。 - 第二次查询,程序正确猜出了答案,交互结束。 在第二个样例中,有 $4$ 道题,答案分别为 'true'、'false'、'true'、'true'。 - 第一次查询全部猜错,得到答案 $0$。 - 第二次查询猜对了第 $1$、$3$、$4$ 题,得到答案 $3$。 - 第三次查询,程序正确猜出了答案,交互结束。 由 ChatGPT 4.1 翻译