本题中n一定为奇数,因而观察半部分图形即可。
下图中以十边形为例:
只需要当长度与高度相等时,必是套上正方形最小。
然后手动算算 cos(alpha) * x = cos(pi / n / 2 - alpha) * x
则alpha = pi / n / 4
然后再代入算一下就是了
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<iomanip>
6 using namespace std;
7 const double pi = acos(-1);
8
9 int n;
10
11 double hdu(double x)
12 {
13 return x / 180.0 * pi;
14 }
15
16 int main(){
17 int T;scanf("%d",&T);
18 while(T--)
19 {
20 scanf("%d",&n);
21 double k = (double)n;
22 double x = 0.5 / sin(hdu((90.0 / k)));
23 double res = 2.0 * cos(pi / 4.0 / n) * x;
24 printf("%.15lf
",res);
25 }
26
27 return 0;
28 }