#CF2038G. 猜测一个字符
猜测一个字符
当前没有测试数据。
G. 猜测一个字符
每次测试的时间限制:2 秒
每次测试的内存限制:512 兆字节
这是一个交互式问题。你必须在打印每行之后立即使用刷新操作。例如,在 中应使用函数 或 ,在 或 中应使用 ,在 中应使用 。
评测系统有一个由字符 和/或 组成的字符串 。这个字符串的长度为 。
你可以提出如下查询:
1 t
意思是:“ 在 中作为连续子串出现了多少次?” 这里, 应是一个由 和/或 组成的字符串;其长度应至少为 ,至多为 。例如,如果字符串 是 ,而字符串 是 ,则查询的响应是 。
你需要通过不超过 次查询,猜测出字符串 中的至少一个字符。注意,给出答案不算一次查询。
在每个测试点以及每个测试用例中,字符串 都是事先固定好的。
交互
一开始,评测程序发送一个整数 ()—— 测试用例的数量。
在每个测试用例开始时,评测程序发送一个整数 ()—— 字符串的长度。
之后,你的程序可以向评测程序提交查询,方法如下(打印一行后不要忘记刷新输出):
1 t
表示询问“ 在 中作为连续子串出现了多少次?”
对于每个查询,评测程序会在一行上打印一个整数。它可能是:
- 如果查询正确且未超过查询次数限制,则返回查询的答案;
- 如果查询不正确(例如,不满足 或字符串 包含 和 以外的字符),或者你在当前测试用例中查询次数过多,则返回整数 。
要提交答案,你的程序应按以下格式发送一行(打印后不要忘记刷新输出):
0 i c
其中 , 是 或 ,表示你猜测 。
如果你的猜测正确,评测程序会在一行上打印一个整数 ,表示你可以继续下一个测试用例(或如果是最后一个测试用例则终止程序),并且你已使用的查询次数会被重置。如果猜测不正确,评测程序会在一行上打印一个整数 。
在你的程序收到 作为响应后,应立即终止。这将导致你的提交得到的判决。如果你的程序没有终止,你的提交结果将是不确定的。
示例
输入
3 // 3 个测试用例
3 // 字符串长度为 3
1 // 101 出现 1 次
1 // 猜测正确
2 // 字符串长度为 2
0 // 00 出现 0 次
0 // 0 出现 0 次
1 // 猜测正确
2 // 字符串长度为 2
1 // 1 出现 1 次
0 // 01 出现 0 次
1 // 猜测正确
输出
1 101 // 询问 101 出现多少次
0 2 0 // 猜测 s[2] 是 0
1 00 // 询问 00 出现多少次
1 0 // 询问 0 出现多少次
0 1 1 // 猜测 s[1] 是 1
1 1 // 询问 1 出现多少次
1 01 // 询问 01 出现多少次
0 2 0 // 猜测 s[2] 是 0
注释
在示例中,有三个测试用例:、 和 。请注意,// 后面的内容是解释交互中每行含义的注释。在真实的问题中,评测程序不会打印这些注释,你也不应打印它们。空行是为方便阅读而添加的,评测程序不会打印它们,你的解决方案也不应打印任何空行。