CF:Polygon for the Angle

http://codeforces.com/contest/1096/problem/C

在这里插入图片描述

因为在一个正n边形中选取3个点可以把这个n边形化成i边形, ( 3 (3 \leq i i \leq ( n 2 ) ) (n-2)) ,
已n=5,i=2可以推出一个公式
在这里插入图片描述
由此可以得出n边形可以得到的几个角度,因为最小的角度是1,所以最大的边是360,这样递推一下就可以得到全部结果

AC代码:

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

const int mod = 998244353;
const int maxn = 2e5 + 5;

int main(int argc, char *argv[]) {
    int a[180], x;
    memset(a, 0, sizeof(a));
    for (int i = 3; i <= 370; i ++){
        for (int j = 1; j < i - 1; j ++) {
           if((180 * j) % i == 0) {
                int x = (180 * j) / i;
                if(a[x] == 0) a[x] = i;
           }
        }
    }
    int T;
    cin >> T;
    while(T --) {
        int n;
        cin >> n;
        cout << a[n] << endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/henu_jizhideqingwa/article/details/85339563