题目描述
输入
第一行一个正整数n代表询问次数。
接下来n行每行一个不超过八位的小数k代表一组询问。
输出
输出共n行,代表每次询问的答案;如果有无数个交点,输出“-1”。
思路
找规律,每次加上前一次得出的一半,初值是0.25,如果我们要找的点在当前的右边就累加4(把两个正方形看成是一个整体)
#include
using namespace std;
int main()
{
int i,j,n,m,s;
double x,y,l,r;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%lf",&x);
l=0;
y=0.25;
s=0;
while (x>l)
{
s=s+4;
l=l+y;
y=y/2;
}
if (x==l)
{
printf("%d\n",-1);
}
else printf("%d\n",s);
}
return 0;
}
Comments NOTHING