思路:将其看成一个一个正方形块,边长为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 }