CF 1354C2 思维

本题中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\n",res);
25     }
26     
27     return 0;
28 }

 

posted @ 2020-11-15 12:56  LegendN  阅读(67)  评论(0)    收藏  举报