QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 512 MB 満点: 100 インタラクティブ

#8490. 猜字符串

統計

这是一个交互式问题。

评测程序拥有一个长度为 $n$ 的字符串 $s$,该字符串由字母 'a'、'b' 和 'c' 组成。你的程序必须猜出这个字符串。

为了猜出该字符串,你的程序可以进行询问。每次询问的形式为一个数字 $i$ ($1 \le i \le n - 1$) 和一个长度为 2 的小写英文字母字符串 $u$。对于每次询问,评测程序会返回 $s_i = u_1$ 和 $s_{i+1} = u_2$ 这两个陈述中有多少个是正确的。

你需要猜出目标字符串,且询问次数不得超过 $\lceil \frac{4}{3}n \rceil$ 次。这里 $\lceil \dots \rceil$ 表示向上取整。

交互

在本题中,你需要与评测程序进行多次交互。保证每组测试数据中的游戏局数不超过 100 局。

在每局游戏开始时,你的程序应从标准输入读取数字 $n$ ($2 \le n \le 100$)。如果 $n = 0$,这意味着你的程序应终止执行。否则,你将开始进行一局目标字符串长度为 $n$ 的游戏,且你的程序最多可以进行 $\lceil \frac{4}{3}n \rceil$ 次询问。

进行询问时,你需要向标准输出打印 ? i u,其中 $1 \le i \le n - 1$,$u$ 是一个长度为 2 的小写英文字母字符串。作为响应,你需要从标准输入读取一个整数 $a$($0, 1$ 或 $2$),表示 $s_i = u_1$ 和 $s_{i+1} = u_2$ 这两个陈述中有多少个是正确的。

当你的程序猜出目标字符串后,必须向标准输出打印 ! s,其中 $s$ 是评测程序所设想的长度为 $n$ 的字符串。打印答案不计入询问次数。在你的程序打印出猜出的字符串后,可以立即开始下一局游戏。

本题中的评测程序可能是自适应的。换句话说,评测程序可以调整其响应,使得存在一个字符串满足所有响应,但该字符串并非预先固定,而是根据你的询问而改变。特别地,如果存在一个字符串满足所有询问响应,但与你猜出的字符串不同,你的程序可能会收到 "Wrong answer" 的判决。

样例

输入 1

3
2
1
1
2
0

输出 1

? 1 ab
? 2 ba
? 2 bb
? 2 bc
! abc

说明

在交互示例中,询问和响应之间用空行隔开,以直观地展示交互过程。在与评测程序的实际交互中,不会有空行,也不应打印空行,但在每次询问后以及打印答案后,必须打印换行符。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.