Codeforces Round #421 (Div. 2)B Mister B and Angle in Polygon
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #421 (Div. 2)B Mister B and Angle in Polygon相关的知识,希望对你有一定的参考价值。
题目: 这里
题意:给一个正n(n <= 100000)边形和一个角度a,在正n边形n找到3个不同的顶点v1,v2,v3,使得 和a之间的差最小,并且输出v1,v2,v3;
思路:可以把这个多边形放在一个圆里面。发现的大小等于v1,v3对应圆心角/2。所有的角都是180/a的倍数。固定一个点的位置1,然后以2为圆心角的起点为n-1的终点枚举另一个点的位置即可。
代码:
// #include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; int main() { int v1 , v2; double a;int n; scanf("%d%lf",&n,&a); double ang = 180.0/(double)n; double minn = 188.0; double ans = 0; for(int i = 2; i <= n - 1;i++) { if(minn > fabs(ang * (i-1) - a)) { minn = fabs(ang * (i - 1) - a); v1 = i; v2 = i + 1; } } printf("1 %d %d\n",v2,v1); }
以上是关于Codeforces Round #421 (Div. 2)B Mister B and Angle in Polygon的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #421 (Div. 2)
codeforces round 421 div2 补题 CF 820 A-E
Codeforces Round #421 (Div. 2)B Mister B and Angle in Polygon