CF 1100C NN and the Optical Illusion(数学)

题目意思:用n个外圆将半径为r的內圆包围起来,使得彼此之间能够相切,问外圆的半径为多少?

解题思路:这是一道几何题,我们需要引入辅助线

CF 1100C NN and the Optical Illusion(数学)_第1张图片

我们设外圆的半径为R 我们可以得到左边(左右其实都一样)那个等腰三角形三角形的斜边长度为R+r,底边为R。又因为的所有圆心连接起来就是一个正多边形,我们知道多边形
内角和为:π*(n-2)(这里外面小圆有多少个,n就为多少,这个可以在草稿本上画一下)。很明显,n个球可以分割成n个这样的等腰三角形。
然后一个底角的角度为π*(n-2)/n/2;现在我们可以根据余弦公式得到:R/(R+r)=cos(a);这样就可以推出R:R=R=r*cos(a)/(1-cos(a));

AC代码

#include
using namespace std;
int main(){
	double n , r;
	cin >> n >> r;
	double a = acos(-1) * (n-2) / n / 2;
	printf("%.7lf\n",r * cos(a) / (1-cos(a)));
//	cout << r * cos(a) / (1-cos(a)) << endl;
	return 0;
} 

你可能感兴趣的:(训练)