zoukankan      html  css  js  c++  java
  • C. Polygon for the Angle(几何)

    题目链接:http://codeforces.com/contest/1096/problem/C

    题目大意:T是测试样例,然后每一次输入一个角度,然后问你在一个n边形里面,能不能构成这个角度,如果能,输出边数,如果没有就输出-1.

    具体思路:利用一个性质,四边形内的每个点都能被这个四边形内的最小的角度表示出来,也就是倍数关系。

    然后我们打表就可以发现,最多是到179度多,这个时候的边数是360条边,这样的话,我们就直接打表,从3-360条边打表,然后循环就可以了。

    AC代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 # define ll long long
     4 # define mod 998244353
     5 const int maxn = 200+100;
     6 struct node
     7 {
     8     double minn;
     9     double maxx;
    10 } q[maxn];
    11 int main()
    12 {
    13     int T;
    14     for(int i=3; i<=360; i++)
    15     {
    16         q[i].maxx=180.0-360.0/(i*1.0);
    17         q[i].minn=q[i].maxx/((i-2)*1.0);
    18         //  cout<<i<<" "<<q[i].maxx<<" "<<q[i].minn<<endl;
    19     }
    20     scanf("%d",&T);
    21     while(T--)
    22     {
    23         int ans=0;
    24         double  tmp;
    25         scanf("%lf",&tmp);
    26         for(int i=2; i<=360; i++)
    27         {
    28             if(q[i].minn<=tmp&&q[i].maxx>=tmp)
    29             {
    30                 int t=tmp/q[i].minn;
    31              //   cout<<i<<" "<<t<<endl;
    32                 if(fabs(t-tmp/q[i].minn)<=1e-6)
    33                 {
    34                     ans=i;
    35                     break;
    36                 }
    37             }
    38         }
    39         printf("%d
    ",ans);
    40     }
    41     return 0;
    42 }
    43  
  • 相关阅读:
    C语言的数据、常量和变量
    C语言关键字、标识符和注释
    关于C/C++的一些讨论
    C++ 复合类型(上)
    C 函数
    C 字符输入输出和输入确认
    C++数据处理
    C控制语句:分支与跳转
    C++ 预备知识#关于C++
    范型在java中的应用
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10262752.html
Copyright © 2011-2022 走看看