tyvj 一个神奇的正方形

发布于 2019-04-04  814 次阅读


题目描述

这里写图片描述

输入

第一行一个正整数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;
}
]]>