阿兔与猜拳
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
这是一个交互式问题。每次输出一行后,必须立即刷新输出缓冲区。例如,在 C++ 中使用 fflush(stdout)
,在 Java 中使用 System.out.flush()
,在 Pascal 中使用 flush(output)
。
你和阿兔进行一场石头剪刀布比赛。这是一场特殊的比赛,阿兔会先出拳,而你需要在 次询问内猜出阿兔出的是什么拳。
交互程序
交互程序首先输出一个整数 ,表示测试总数。
在每个测试用例中,你的程序需要输出询问或答案:
- 询问:输出
? 拳
,表示你询问的拳(最多询问 次)。 - 答案:输出
! 拳
,表示你最终猜测阿兔出的拳。 - 拳只能是
shitou
(石头)、jiandao
(剪刀)、bu
(布)。
交互程序会根据你的询问或答案返回以下响应:
- 如果你询问的拳与阿兔的拳相同(平局),返回
0
。 - 如果你询问的拳能使任一方赢,返回
1
。 - 如果你正确猜出阿兔的拳(即输出
! 拳
且答案正确),返回2
。 - 其他情况(如格式错误、超过询问次数等),交互程序会直接终止并返回
-1
判定答案错误,若你的程序接收到此结果但没有终止,则会判定时间超限等不可预知的错误。
1
0
2
? jiandao
! jiandao
解释 #1
你询问 ? jiandao
(剪刀),交互程序返回 0
(平局),因此可以确定阿兔出的是 jiandao
(剪刀)。
随后你输出正确答案 ! jiandao
,交互程序返回 2
(答案正确)。