#P15749. [JAG 2024 Summer Camp #3] Interactive String Guessing

[JAG 2024 Summer Camp #3] Interactive String Guessing

说明

这是一道交互题

你的任务是编写一个程序,通过重复的询问与回答来猜出一个秘密字符串。该秘密字符串仅由字符 ab 组成,其长度在 111,0001,000 之间。记秘密字符串为 S\mathbf{S}。在一次询问中,你需要指定一个字符串 T\mathbf{T}。作为回应,系统会返回 T\mathbf{T} 是否是 S\mathbf{S} 的一个子串。这里,当 S\mathbf{S} 的某个连续部分与 T\mathbf{T} 完全匹配时,称 T\mathbf{T}S\mathbf{S} 的子串。例如,abababababa 的子串,但不是 abba 的子串。你最多可以进行 1,1001,100 次询问。

交互过程

你应该从向标准输出发送一次询问开始,并从标准输入接收回应。这个交互过程可以重复多次。当你通过这些交互对自己的猜测有足够信心时,就可以发送你的答案。一次询问的格式应如下所示,并以换行符结束。

? T\begin{aligned} &? \ T \end{aligned}

这里,T\mathbf{T} 是一个非空字符串,仅由 ab 组成,其长度在 111,0001,000 之间(含端点)。对询问的回应将从标准输入给出,格式如下,并以换行符结束。

R\begin{aligned} &R \end{aligned}

这里,R\mathbf{R} 表示对询问的回应。当 T\mathbf{T} 是秘密字符串 S\mathbf{S} 的子串时,R\mathbf{R}Yes;当 T\mathbf{T} 不是秘密字符串 S\mathbf{S} 的子串时,R\mathbf{R}No。然而,如果 T\mathbf{T} 不满足约束条件,或者询问次数超过了限制,那么 R\mathbf{R} 将为 Invalid。如果评测机返回 Invalid,你的程序就已经被判定为不正确,因此请立即终止程序。

你应该将你的答案以如下格式发送到标准输出,并以换行符结束。

! T\begin{aligned} &! \ T \end{aligned}

这里,T\mathbf{T} 是你所确定的秘密字符串,其长度在 111,0001,000 之间(含端点)。你只能发送一次答案,因此你必须在发送答案之前,通过重复的交互过程来确保你的猜测是正确的。发送答案后,你的程序应立即终止,不要输出任何额外内容。

关于交互评测的注意事项

如果在交互过程中输出了格式错误的内容,或者你的程序提前退出,评测结果将是不确定的。请在打印答案后立即终止程序,否则评测结果将不确定。由于某些环境需要刷新输出缓冲区,请确保你的输出确实被发送出去了。否则,你的输出将永远不会到达评测机。

字符串 S\mathbf{S} 将在第一次交互之前确定,并且不会根据你的提问或其他因素而改变。


Yes

No
? aba

? baa

! abab

提示

翻译由 DeepSeek V3.2 完成