题目:
点击打开链接
因为输入最多为8位小数,所以只要算出27个分割点就可以了,如果x在分割点上输出-1,否则对应下标(即当前为第几个分割点)乘4即为相交的边数。
#include <stdio.h>
#include <math.h>
double a[30];
int main()
{
int t, flag, i;
double b = 0.5;
for(i = 0;i < 27;i++){
a[i] = 0.5 - b;
b *= 0.5;
}
scanf("%d", &t);
while(t--)
{
scanf("%lf", &b);
flag = 1;
for(i = 0;i < 27;i++){
if(b == a[i]){
flag = 0;
break;
}
if(a[i] > b) break;
}
if(!flag) printf("-1\n");
else printf("%d\n", i * 4);
}
}