CF1578I Interactive Rays
题目描述
这是一个交互问题
你的目标是通过询问多条射线,根据回答找到平面上的一个圆并计算出从原点到这个圆的距离,从而输出圆心坐标及半径。射线端点为原点,射线过点 $b$ 无限延伸,点 $b$ 须在询问中给出$(x,y)$坐标。
每个回答由$x_c$、$y_c$和$r_c$三个未知的整数参数得到,这些参数是为了每轮询问与回答预先确定的,但你不知道,你需要计算出它们并在交互的最后输出。$(x_c,y_c)$是圆的中心坐标,$r_c$是圆的半径。$x_c$、$y_c$和$r_c$的绝对值不超过$10^5$,并且$1 \le r_c \le \sqrt[]{x_c^2+y_c^2} -1$。
以$(0,0)$为射线的端点通过你指定整数坐标延伸射线,你可以得到射线与圆的距离的回答。特别地,如果射线与圆相交或相切则回答为0。否则回答为射线到圆的距离。
输入格式
无
输出格式
交互从你的程序输出询问开始,在你的程序找到并输出问题的答案时结束。
每一次询问的格式为"? $x_q$ $y_q$",$x_q$和$y_q$都为整数($\left|x_q\right|,\left|y_q\right| \le10^6;x_q\neq0\ or\ y_q\neq0$)。
回答程序会在一行里仅输出一个浮点数,这个浮点数即为射线到圆的距离 (绝对值精确到$10^{-10}$)。
你的程序可以提出下一个询问,获得回答,循环以往。你最多可以提出60个询问。在交互的最后,将答案打印在一行内,格式为"! $x_c\ y_c\ r_c$",输出并退出。
请注意,回答输出的浮点数实际上是四舍五入到小数点后的第10位,因此如果你在你的计算机上对解题程序进行测试,请确保你也执行了相应的数据规模及四舍五入约定。
$\\$
说明/提示:示例交互中的询问说明。
说明/提示
Illustration of the queries from the example interaction.