数学题(几何规律)-CodeForces 820B-Mister B and Angle in Polygon
题目大意是给一个正多边形的边数n和一个角度a,a与正多边形三个顶点所构成的角 (v2为角顶点)最接近,求v1,v2,v3,答案可能有多个,输出任意一种
推算正五边形和正六边形,会发现正多边形由三个顶点构成的角数量一定且角度有等差关系。
选取1作为角顶点,2作为其中边点,移动另一边,这样答案就是 x 1 2,找出x使得条件符合
穷举,x的范围为1~n-2
代码:
include
include
using namespace std;
int main()
{int n;
double angle;
double Child_Angle;
int Pow=0;
cin>>n>>angle;
Child_Angle=180.0/(n*1.0);
double L_angle=-10000000000000.0;
for(int i=1;i<=n-2;i++)
{
//cout<<L_angle<<endl;
if(fabs(L_angle-angle)-fabs(Child_Angle*i-angle)>1e-9)
{
Pow+=1;
L_angle=Child_Angle*i;
}
}
cout<<Pow+2<<" "<<"1 2"<<endl;
}
还没有评论,来说两句吧...