题目大意
给出正多边形边数n,一个角度a,选出三个顶点,使所成角度最接近a。
题解
由等弧所对的圆周角相等知·,一个顶点向其它所有顶点连一条线段,相邻两线段间夹角相等(定义为单位角),所以o(n)枚举选择单位角个数,判断是否更接近(似乎能o(1)做)。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int read()
{
char ch=getchar();int f=0;
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9')
{f=(f<<1)+(f<<3)+ch-'0';
ch=getchar();}
return f;
}
int main()
{
double n,a;
cin>>n>>a;
double x=180/n;
double minn=23333;int now;
for(int i=1;i<=n-2;i++)
{
if(fabs(i*x-a)<minn)
{
minn=fabs(i*x-a);
now=i;
}
}
printf("1 %.0lf %d",n,now+1);
}