思路:根 据 几 何 性 质 , 正 多 边 形 所 有 三 个 点组成的 角 都 是最小角的倍数, 然后根据内角公式 可以求出 正多边形 最小角为 多边形内角 / (n - 2) 然后 打表发现 180边形最小角为1 最大角 178 所以 只有 179无法组成, 然后继续往后打表 发现 360边形 可以 组成 179。所以 打好最大最下角的表 然后每次暴力查询 最小的 多边形即可。
三点相邻时,角最大,所以便存在最小角
#include<bits/stdc++.h>
using namespace std
;
struct node
{
double a
,b
;
}v
[400];
int main(){
for(int i
= 3; i
<= 361 ; i
++){
v
[i
].a
= 1.0 * (i
- 2) * 180 / (i
* 1.0);
v
[i
].b
= 1.0 * v
[i
].a
/ (i
- 2 ) * 1.0;
}
int t
;
cin
>> t
;
while(t
-- ){
double n
;
cin
>> n
;
int tmp
= 0;
for(int i
= 3; i
<= 361; i
++){
for(int k
= 1; ; k
++){
if(v
[i
].b
* k
> v
[i
].a
) break;
if(v
[i
].b
*k
== n
){
tmp
= i
;
break;
}
}
if(tmp
== i
) break;
}
cout
<< tmp
<< endl
;
}
return 0;
}
转载请注明原文地址: https://yun.8miu.com/read-27577.html