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

    xiaoxiao2022-07-03  127

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

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

    我们设外圆的半径为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<bits/stdc++.h> 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; }
    最新回复(0)