1. 程式人生 > >CF:Polygon for the Angle

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; }