#JDT2A. 阿兔与猜拳
阿兔与猜拳
题目描述
这是一个交互式问题。每次输出一行后,必须立即刷新输出缓冲区。例如,在 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(答案正确)。
相关
在下列比赛中: