http://codeforces.com/contest/1096/problem/C
因为在一个正n边形中选取3个点可以把这个n边形化成i边形,
,
已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;
}