C1. Simple Polygon Embedding

194 篇文章 1 订阅
44 篇文章 0 订阅
该问题要求找到能容纳一个2n边的正多边形的最小正方形的面积,其中n为偶数。正多边形的所有边长均为1,并且可以旋转。输出对于每个测试用例,最小正方形的边长平方,答案需要精确到10^-6。
摘要由CSDN通过智能技术生成

链接:https://codeforces.ml/contest/1354/problem/C1

The statement of this problem is the same as the statement of problem C2. The only difference is that, in problem C1, nn is always even, and in C2, nn is always odd.

You are given a regular polygon with 2⋅n2⋅n vertices (it's convex and has equal sides and equal angles) and all its sides have length 11. Let's name it as 2n2n-gon.

Your task is to find the square of the minimum size such that you can embed 2n2n-gon in the square. Embedding 2n2n-gon in the square means that you need to place 2n2n-gon in the square in such way that each point which lies inside or on a border of 2n2n-gon should also lie inside or on a border of the square.

You can rotate 2n2n-gon and/or the square.

Input

The first line contains a single integer TT (1≤T≤2001≤T≤200) — the number of test cases.

Next TT lines contain descriptions of test cases — one per line. Each line contains single even integer nn (2≤n≤2002≤n≤200). Don't forget you need to embed 2n2n-gon, not an nn-gon.

Output

Print TT real numbers — one per test case. For each test case, print the minimum length of a side of the square 2n2n-gon can be embedded in. Your answer will be considered correct if its absolute or relative error doesn't exceed 10−610−6.

Example

input

Copy

3
2
4
200

output

Copy

1.000000000
2.414213562
127.321336469

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
#include<algorithm>
using namespace std;
#define ll long long
#define lb long double
#define INF 0x3f3f3f3f
#define pi 3.1415926535897932384626
ll n,m,k,t,s,min1;
ll a,b,c,d;
char x[200001];
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		double x=pi/(2*n);
		double ans;
		ans=1.0/(sin(x)*1.0/cos(x));
		printf("%.9lf\n",ans);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值