CF-1096C Polygon for the Angle
阿新 • • 發佈:2019-01-17
比例 等於 bits 發現 pro inf 一個 abc 滿足 時(想一想為什麽是這樣),就無法組成三角形(因為只剩下一份了,不夠與ang組成三角形),這個時候只需將 n乘以2即可。
CF-1096C Polygon for the Angle
https://codeforces.com/contest/1096/problem/C
題意:給一個角度ang(1<=ang<=180)
然後輸出如圖所示規則的最小正n邊形的邊數
分析:abc三點構成一個三角形,而三角形內角的比例就對應於它們各自對應的那段邊數比。如圖,54度對應三份,剩下的分別對應五份和兩份。
所以,對於任意一個角度ang
,先求出g=gcd(ang,180)
,即每一邊可以對應多少度,然後 n=180/g
即為正n邊形的邊數,wait wait!是不是有點太快了,別忘了我們的前提條件,我們是用三角形內角比例等於對應邊數比得到的結論,我們要讓它滿足能夠組成三角形這一條件,所以發現當 ang/180==(n-1)/n
#include <bits/stdc++.h> using namespace std; int T,ang,n; int main() { cin>>T; while(T--) { cin >> ang; int n = 180/__gcd(ang,180); if(ang * n / 180 == n-1){ n*=2; } cout << n << endl; } }
CF-1096C Polygon for the Angle