HDU 6550
在半径为 1 的圆上有 n 个点,它们也是圆的 n 等分点,将每个相邻的 n 等分点相连,组成了一个正 n边形,现在你可以在圆上再增加一个点,使得新的 n + 1 边形的面积最大,请输出最大面积。
Input
输入有多组(不超过 100 组)。
每组数据一行一个整数 n 代表点的数量。
3 ≤ n ≤ 100
Output
每组数据输出一行一个数表示加上一个点后的最大面积,结果保留6位小数。
Sample Input
3
Sample Output
1.732051
题意分析:
这没什么好分析的,因为
就多了个三角形嘛,用数学公式算一手就vans了。
代码:
#include <iostream>
#include <vector>
#include <cstring>
#include <string>
#include <iomanip>
#include <cmath>
#include <map>
#include <stack>
#include <algorithm>
#include <queue>
#include <set>
#include <cstdio>
#define INF 0x3f3f3f3f
#define MAX 200100
#define ll long long
#define N 10010
#define PI acos(-1.0)
//记住了!!
using namespace std;
int main()
{
double n;
while(scanf("%lf", &n) != EOF)
//看这个IO流又是我亲爱的队友!
{
double ans = 0.5 * (n - 1) * sin(2 * PI / n) + sin(PI / n);
printf("%.6f\n", ans);
}
}