Educational Codeforces Round 57 (Rated for Div. 2) C 正多邊形 + 枚舉
阿新 • • 發佈:2019-05-04
Education while math 題意 block n-2 int ORC 枚舉
https://codeforces.com/contest/1096/problem/C
題意
問是否存在一正多邊形內三點構成的角度數為ang,若存在輸出最小邊數
題解
- 三點構成的角是個圓周角,假設n為多邊形邊數,則能構成的角範圍是\(\frac{180}{n} \leq ang \leq \frac{n-2}{n}*180\),每次變化\(\frac{180}{n}\)
- 首先明確正多邊形一定存在,並且最大邊數不會超過360,若邊數等於360,則可以組成的角的範圍是\(0.5\leq ang \leq 179\),每次變化\(0.5\),所以所有的ang都能組成
- 所以枚舉邊數,然後再枚舉使用的內角數即可
代碼
#include<bits/stdc++.h> using namespace std; int t,ang,i,st,tp,ok; int main(){ cin>>t; while(t--){ ok=0; cin>>ang; for(int i=1;i<=180;i++){ for(int j=1;j*180.0/i<=ang&&j<=i-2;j++){ if(j*180.0/i==ang){ cout<<i<<endl; ok=1; break; } } if(ok)break; } if(!ok)cout<<360<<endl; } }
Educational Codeforces Round 57 (Rated for Div. 2) C 正多邊形 + 枚舉