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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章