CodeForces1345C1. Simple Polygon Embedding

给一个偶数nn,代表一个正2n2*n边形,求最小外接正方形的边长。

nn为偶数时,代表2n2*n一定可以被4整除,那么正方形一定可以和正2n2*n边形的4条边完美贴合。这就是最小的正方形。因为一旦进行旋转,正方形的面积就会增大,那么边长也会增大。

img

计算正方形边长:

2n2*n边形内角用公式来算: α=(2n2)π2n=(n1)πn\alpha=\frac{(2*n-2)*\pi}{2*n}=\frac{(n-1)*\pi}{n}

计算xx长度: x=12tan(α2)x=\frac{1}{2}*tan(\frac{\alpha}{2})

正方形边长: ans=2x=tan((n1)π2n)ans=2*x=tan(\frac{(n-1)*\pi}{2*n})

#include <bits/stdc++.h>
#define pb push_back 
#define fir first
#define sec second
#define ms(a,b) memset(a,b,sizeof(a)) 
#define INF 0x3f3f3f3f
#define sp system("pause")
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e4+5;
const int mod=10007;
const db pi=acos(-1.0);
int main()
{
    int t;
    double n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        printf("%lf\n",tan((n-1)*pi/n/2));
    }
    #ifndef ONLINE_JUDGE
    sp;
    #endif
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章