思路:
可以把这个多边形的外接圆画出来。
然后知道给出的角是一个圆周角。
假设这是一个正n边形,选择距离为i的两个点构成角。
构成的圆心角度数为 360 ° / n ∗ i 360°/n*i 360°/n∗i ,圆周角度数就是 180 ° / n ∗ i 180°/n*i 180°/n∗i。
接下来考虑预处理。
枚举是正几边形,来更新度数所对的边数。
再查表即可。
代码:
#include<bits/stdc++.h>
using namespace std;
int f[200];
int main() {
for(int i=3;i<=360;i++) {
for(int j=1;j<i-1;j++) {
if((180*j)%i!=0) continue;
if(!f[180*j/i]) f[180*j/i]=i;
}
}
int T;
scanf("%d",&T);
while(T--) {
int x;
scanf("%d",&x);
printf("%d\n",f[x]);
}
return 0;
}