#P17573. PM4452 圆盘覆盖
PM4452 圆盘覆盖
题目描述
给定一个半径为 discRadius 的圆盘,希望用 numDiscs 个半径相同的小圆盘完全覆盖它。所有小圆盘都与原圆盘处于同一平面。
覆盖方式必须遵循下面的规则。
首先,用若干个与原圆盘同心的圆把原圆盘划分成若干个环形区域。最内层区域可以看作内半径为 的“环”。随后,每个环单独用若干个小圆盘覆盖:负责同一个环的所有小圆盘,其圆心到原圆盘圆心的距离都相同,并且这些圆心均匀分布在该同心圆上,也就是构成一个正多边形。
你可以自行决定:
- 把原圆盘分成多少个环;
- 每个环使用多少个小圆盘;
- 每个环对应的小圆盘圆心到原圆心的距离。
所有环使用的小圆盘总数必须恰好为 numDiscs。需要选择这些参数,使得在上述覆盖方式下,小圆盘所需的公共半径尽可能小。
请输出这个最小半径。
覆盖某一个环时,即使该环的一部分已经被其他环所使用的小圆盘覆盖,也仍然忽略这些额外覆盖,只考虑分配给当前环的小圆盘能否独立覆盖整个环。
最内层“环”是一个圆盘,即其内半径为 。也允许总共只有一个环。
输入格式
输入一行,一个实数 discRadius 和一个整数 numDiscs。
输出格式
输出一个实数,表示所需小圆盘半径的最小值。
当你的答案与标准答案的绝对误差或相对误差小于 时视为正确。
样例 1
输入
1000.0 1
输出
1000.0
样例 2
输入
500.0 2
输出
500.0
样例 3
输入
100.0 3
输出
86.60254037844385
三个小圆盘的圆心可以构成等边三角形。若小圆盘半径为 ,最多可覆盖半径为 的圆盘,因此答案为 discRadius。
样例 4
输入
100.0 4
输出
70.71067811865474
样例 5
输入
200.0 19
输出
59.085199376486976
下面两幅图分别展示了使用 个小圆盘时的一种最优覆盖方式,以及另一种非最优覆盖方式。

数据范围
- ;
- 。