#P11144. 「SFMOI Round I」Strange Madoka Game
「SFMOI Round I」Strange Madoka Game
题目背景
English statement. You must submit your code at the Chinese version of the statement.
いつも君の側にいるから / 无论何时我都与你同在
儚すぎて / 世界如此虚幻
消えて行きそうな世界 / 似乎随时随地都会消失
だけど君がいる / 然而只要有你
それだけで守りたいと思った / 我就心甘情愿将它守护
题目描述
本题和 B2 是不同的问题,请分别仔细阅读两题题面。
这是一道交互题。
提示:我们在题目描述的最后提供了一份简要的、形式化描述的题面。
圆和焰在玩游戏。
圆在心中想了一个非负整数 ,让焰猜出 的值。当然,圆不会为难焰,所以 。圆不会作弊,也就是说,圆不会悄悄更换想好的数字。
焰可以问圆:对于正整数 , 的值是多少。焰需要用最少的询问次数来猜出 的值。(为了得到全部分数,最多只能使用 次询问。)
圆一共和焰玩了 次游戏。然而,焰的数学很差,于是她找来了你,来帮她猜出这 次游戏的答案。
形式化地:有一个隐藏的非负整数 。每次询问给定正整数 ,回答 。用最少的询问次数找出 。共有 组测试数据。 的数值在事先确定,不会根据询问变化,也就是说,交互库是非适应性的。
【实现细节】
对于每个测试点,输入一行一个正整数 ,表示游戏次数。
对于每组测试数据,你可以用以下的格式发起一次询问:
-
:询问 的值。你需要保证 是正整数,且 。
从标准输入流读入一个整数表示答案。特别地,若整数是 ,你的程序已经被判定为 ,此时你需要立刻终止程序。
你可以用以下的格式回答答案:
- :回答 的值。
在发起询问后,需要刷新缓冲区,否则可能导致 TLE。
- 在 C++ 中,使用
fflush(stdout)
或cout.flush()
。 特别地,利用std::endl
来换行也会刷新缓冲区。 - 在 Pascal 中,使用
flush(output)
。 - 在 Python 中,使用
stdout.flush()
。 - 对于其它语言,可自行查阅文档。
输入格式
见【实现细节】。
输出格式
见【实现细节】。
1
1
2
? 2
? 3
! 5
提示
数据范围
对于 的数据,保证 , 为非负整数,。
评分方式
记单个测试点中,你的询问次数的最大值为 。则得分 如下所示:
$$\begin{aligned} \mathrm{score}=\begin{cases} 0, & Q\in [81,+\infty) \\ 10, & Q\in [11,81) \\ 25, & Q\in [3,11) \\ 50, & Q\in [0,3) \\ \end{cases} \end{aligned} $$本题得分为所有测试点得分的最小值。
本题数据点的范围是非严格单调递增的。