Educational Codeforces57 (Rated for Div. 2) C. Polygon for the Angle (正多边形角度,gcd)

    xiaoxiao2024-12-26  66

    题目连接: https://codeforces.com/problemset/problem/1096/C

    题目大意: 给一个角度,问正几边形的三个结点连边能形成这个角度

    一个有趣的结论 正n边形能形成的所有角度为 180*k/n k=1.2…n-2 证明出题人给了

    #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<iostream> #include<vector> #include<map> #include<set> #include<stack> #include<queue> #include<stdlib.h> #include<algorithm> #include<time.h> #include<unordered_map> #define bug1(g) cout<<"test: "<<g<<endl #define bug2(g,i) cout<<"test: "<<g<<" "<<i<<endl #define bug3(g,i,k) cout<<"test: "<<g<<" "<<i<<" "<<k<<endl #define bug4(a,g,i,k) cout<<"test: "<<a<<" "<<g<<" "<<i<<" "<<k<<endl using namespace std; typedef long long ll; ll n; int t; int main() { ios::sync_with_stdio(0); cin>>t; while(t--){ cin>>n; ll c=__gcd(n,180ll); ll ans=-1; for(ll i=1;i*180/c<=998244353;i++) { if(i*180/c>=i*n/c+2) {ans=i;break;} } if(ans!=-1) cout<<ans*180/c<<endl; else cout<<ans<<endl; } return 0; }
    最新回复(0)