AT_tkppc6_2_d NG Word Game
题目描述
**这是一个和计算机进行交互的题目。**
kaage 君和 penguinman 君在玩一个叫做 NG 单词的游戏。游戏规则如下:
- penguinman 君会选择一个由 `0` 和 `1` 构成的长度为 $N$ 的字符串,作为 NG 单词。
- kaage 君则需要通过反复询问的方式来找出这个 NG 单词:
- 每次,他会选择一个长度在 $1$ 到 $3000$ 之间的二进制字符串 $S$。
- 然后询问这个字符串 $S$ 是否包含 NG 单词作为它的子序列。
- 如果 kaage 君能够在不超过 $2000$ 次询问内找出 NG 单词,他将获胜。否则,penguinman 君获胜。
由于 kaage 君本人很忙,他委托你来编写一个程序,以帮助找出这个 NG 单词。
请注意,一个字符串 $X$ 是另一个字符串 $Y$ 的子序列,意味着可以从 $Y$ 中删除若干字符(可以不删除任何字符)后,顺序不变地得到 $X$。
### 输入格式
首先,给出一个整数 $N$,表示 NG 单词的长度:
> $N$
接下来,你需要通过多次询问来确定 NG 单词。每次询问时应输出一个由 `0` 和 `1` 组成的字符串 $S$,它的长度在 $1$ 至 $3000$ 之间:
> ? $S$
对于每个询问,将收到一个回答,表示 NG 单词是否是 $S$ 的子序列,用 `Yes` 或 `No` 表示。
当你确定了 NG 单词时,输出该单词:
> ! $NG$
注意,最终输出 NG 单词的操作不计入询问次数。
可以证明,在不超过 $2000$ 次询问中,一定能够找出 NG 单词。
### 数据范围与提示
- $1 \leq N \leq 1000$
- $N$ 是一个整数
#### 注意事项
- 在每次输出后,请确保刷新输出,否则可能会出现超时(TLE)。
- 在输出 NG 单词并确定答案后,程序应结束运行,否则判题结果可能不确定。
- 如果输出格式错误或询问次数超过 $2000$,结果可能是不确定的。
### 示例
以下是一个例子:$N=3$,假设 NG 单词为 `110` 的交互过程。注意,这只是一个例子,具体实现可能不需要完全符合示例的交互顺序。
程序输入(裁判的输出)程序输出:
```
3
? 1000010
Yes
? 00101
No
? 110
Yes
! 110
```
原案: [kaage](https://atcoder.jp/users/kaage)
**本翻译由 AI 自动生成**
输入格式
无
输出格式
无
说明/提示
### 制約
- $ 1\ \leq\ N\ \leq\ 1000 $
- $ N $ は整数
### 注意
- 出力した後に、出力を flush する必要がある。そうしない場合、 `TLE` する可能性がある。
- NG ワードを答えた後プログラムを終了させなかった場合、ジャッジ結果は不定である。
- 正しくない形式で出力をしたり、 $ 2000 $ 回より多くの質問をした場合は、ジャッジ結果は不定である。
### 入出力例
この入出力例では、 $ N=3 $ であり、 NG ワードは `110` であるときのジャッジとのやり取りの一例を示しています。
なお、これはあくまで入出力例であり、意味のあるやりとりをしているとは限らないことに注意してください。
自分のプログラムへの入力(ジャッジ側の出力)自分のプログラムの出力3? 1000010Yes? 00101No? 110Yes! 110原案: [kaage](https://atcoder.jp/users/kaage)