- 题目大意
给一个半径为R的大圆,里面有n个小圆,把这些小圆放置成和大圆均内切且相邻两个小圆相切的形式,问每个小圆的半径是多少。
- 解题思路
纯粹的几何题,找出小圆个数与半径的几何关系即可,即r/(R-r)=sin(360°/n/2)(注意保留的小数位数)。
- 代码
#include <iostream> #include <algorithm> #include <cmath> #include<iomanip> using namespace std; #define PI 3.14159265358979323846 int main() { double R, r, n; int t; double ds; cin >> t; for (int i = 1; i <= t; i++) { cin >> R >> n; n = n * 2; ds = PI * 2 / n; r = R * sin(ds) / (1 + sin(ds)); cout << "Case " << i << ": " << setprecision(10) << std::fixed << r<<endl; } return 0; }