#P5814. [nerc 2022]Interactive Factorial Guessing

[nerc 2022]Interactive Factorial Guessing

背景

糟糕,这个恶作剧评委又隐藏了某些东西,你需要通过交互的方式来猜测它。

这一次,你需要找到一个整数nn。为此,你最多可以进行10次查询,每次查询的形式为“n!n!的第kk位小数是多少?”(n!n!表示从11nn的所有整数的乘积,也就是阶乘)。

交互协议

第一行包含一个整数tt (1t100)(1 \leq t \leq 100) —— 你需要处理的测试用例数量。

对于每个测试用例,整数nn已经预先选择好。n!n!的长度最多为20000位,因此1n59821 \leq n \leq 5982

你最多可以进行10次查询,查询的格式为“? kk(0k<20000)(0 \leq k < 20000)。对于每次查询,你会得到一个单一数字 —— n!n!的第kk位小数(响应是0099之间的一个数字)。数字从最低有效位开始编号,即k=0k=0表示最低位。如果n!n!不够长,没有第kk位,则返回00

在找到nn的值后,你应输出“! nn”进行回答。如果回答正确,你将收到“YES”并继续下一个测试或在最后一个测试时结束。如果回答不正确,或者你只是尝试猜测而信息不足,且存在多个可能的答案,则会收到“NO”,此时你的提交将收到“Wrong answer”判定,程序应立即终止。

示例交互

2
1
YES
0
2
YES
? 0
! 1
? 0
? 19997
! 5982