GitBook

这里写图片描述 这里写图片描述

乍一看有点难 但仔细想一想 题目还是挺简单的 一些限制条件在那呢

规定路由器只能在中间 所以要求直径需大于宽

同时 R>=1 D>=1 L>=1 保证了 只要直径大于宽 那么就一定有结果

所用路由器个数取决与于边缘的长度 既等于图中左下角到下方两圆交点的那一段长度

再使用 ceil() 来向上取整数 所以代码如下

#include<stdio.h>
#include<math.h>
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		double L,D,R;
		scanf("%lf %lf %lf",&L,&D,&R);
		if(2*R<=D)
			printf("impossible\n");
		else
			printf("%.lf\n",ceil(L/sqrt(4*R*R-D*D)));
		}
	return 0;
}

标程可以说和我一样了~ 嗯…… 或许应该说我和标程一样~ 哈哈哈 无所谓啦

#include<stdio.h>
#include<math.h>
int main() {
	int T;
	double L,D,R,a;
	scanf("%d",&T);
	while(T--) {
		scanf("%lf%lf%lf",&L,&D,&R);
		a=4*R*R-D*D;
		if(a>0)printf("%.0lf\n",ceil(L/sqrt(a)));
		else puts("impossible");
	}
}

题目地址:【NYOJ】[199]无线网络覆盖