CF1096C Polygon for the Angle

思路:

要想到正n边形中所有可能的ang为180 * k / n (1 <= k <= n - 2)。

根据n = 180 * k / ang, n是大于等于3的整数,并且n >= k + 2,计算满足条件的最小的n即可。

实现:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int my_ceil(int x, int y)
 4 {
 5     return (x + y - 1) / y;
 6 }
 7 int main()
 8 {
 9     int T, a;
10     cin >> T;
11     while (T--)
12     {
13         cin >> a;
14         int lb = my_ceil(2 * a, 180 - a);
15         lb = max(lb, my_ceil(a, 60));
16         int g = __gcd(180, a);
17         int ans = 180 / g;
18         a /= g;
19         if (lb > a) ans *= my_ceil(lb, a);
20         cout << ans << endl;
21     }
22     return 0;
23 }
原文地址:https://www.cnblogs.com/wangyiming/p/10800866.html