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位,因此如果你在你的计算机上对解题程序进行测试,请确保你也执行了相应的数据规模及四舍五入约定。 $\\$ 说明/提示:示例交互中的询问说明。

说明/提示

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1578I/95da2509ed68a544032eea309fdcc424cbd795d0.png)Illustration of the queries from the example interaction.