思路:将其看成一个一个正方形块,边长为k 。n=l/k。当l/k>(int)(l/k)时即属于长多出一点,这时为了全部覆盖,就还需要一个路由器,你懂的

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     int N,l,d,r,n;
 6     double k;
 7     scanf("%d",&N);
 8     while(N--)
 9     {
10         scanf("%d%d%d",&l,&d,&r);
11         k=sqrt((double)r*r-(double)d*d/4)*2;//包括k为复数,即r<d/2的情况,此时是impossble 
12         n=(int)(l/k>(int)(l/k)?l/k+1:l/k);// 将其看成一个一个正方形块,边长为k 
13         if(k>=1)   //两台无线路由之间的最小距离不能小于1米 
14         printf("%d\n",n);
15         else
16         printf("impossible\n");
17     }
18     return 0;
19 }

相关文章: