首页 > 其他分享 >★★翻滚吧硬币★★

★★翻滚吧硬币★★

时间:2023-02-12 12:12:07浏览次数:46  
标签:PI 硬币 翻滚 times 固定 pi

★★翻滚吧硬币★★

题意:

任取两枚硬币固定在二维平面上,并让它们恰好相切,用第三枚硬币沿着它们形成的边界进行翻滚,即时刻保证与至少一枚已固定的硬币相切。这样这枚运动的硬币在翻滚了一定的圈数之后,一定会回到原点,即恰好绕了一周。(如此一来,便会出现三种情况:固定 A,B,让 C 运动;固定 A,C,让 B 运动;固定 B,C,让 A 运动)

求出运动的硬币翻滚的圈数最少是多少

分析:

绕半径最小的两个圆旋转一定最小,重点是求弧长(余弦定理已经忘完了,去百度了一下
求出角度后就好算了~~

\[ \frac{(\pi - \alpha) \times r_2 + (\pi - \beta) \times r_1}{\pi \times r_3} \quad \]

Code

void solve()
{
    cin >> r[1] >> r[2] >> r[3];
    sort(r + 1, r + 4);

    a = r[1] + r[2], b = r[1] + r[3], c = r[2] + r[3];

    double x, y;
    x = acosl((a * a + c * c - b * b) / (2.0l * a * c));
    y = acosl((a * a + b * b - c * c) / (2.0l * a * b));

    res = ((PI - x) * c + (PI - y) * b) / (PI * r[3]);
    cout << fixed << setprecision(20) << res << endl;
}

标签:PI,硬币,翻滚,times,固定,pi
From: https://www.cnblogs.com/Aidan347/p/17113592.html

相关文章