Polygon for the Angle(CF-1096-C)

题目链接:https://codeforces.com/contest/1096/problem/C
题目大意:在一个正n边形中任取三点(不重合)夹角为rad,给你一些rad问满足的最小n是多少。

解题思路:
首先是小学数学:圆心角是圆周角的两倍

然后就可以很轻易地求得一个正n边形可以凑得的角度有(180/n)*d   (d=1,2,3,……n-2)

然后暴力求解即可,n最大跑到360时最小的角是0.5,可以凑出所有整数了(输入的rad是整数),(再不能凑出的n再大也不会有符合的)。

 
代码

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    int t;
    cin>>t;
    while(t--)
    {
        int ang;
        cin>>ang;
        int ans=-1;
        double ww;
        int f=0;
        for(int i=3; i<=18000; i++)
        {
            ww=180.0/i;
            for(int j=1;j<=i-2;j++)
            {
                if(ww*j==ang)
                {
                    f=1;
                    ans=i;
                    break;
                }
                if(ww*j>ang)
                    break;
            }
            if(f)
                break;
        }
        cout<<ans<<endl;
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注