题目链接:http://codeforces.com/contest/820/problem/B 题意:有个正凸多边形,现在告诉你一个角度a,让你从多边形里面找一个角,使得尽可能的接近a,输出任意一组顶点编号 解析:如果把多边形外接圆,相当于有n-2个圆周角,固定一条边,移动另一条边,每次增长的度数就是圆周角的大小,维护一下最小值就直接出结果了
#include <bits/stdc++.h>
using namespace std;
int main(
void)
{
int n,a;
scanf(
"%d %d",&n,&a);
if(n==
3)
puts(
"2 1 3");
else
{
double du =
180.0/n;
double ans =
0x7fffffff;
int i;
for(
int j=
1;j<=n-
2;j++)
{
if(ans>
fabs(a-
1.0*j*du))
{
ans = a-j*du;
i = j;
}
}
printf(
"2 1 %d\n",
2+i);
}
return 0;
}