zoukankan      html  css  js  c++  java
  • Codeforces Round #421 (Div. 2)B. Mister B and Angle in Polygon(模拟+精度控制)

    传送门

    题意

    给出正n多边形和一个数a,寻找与a最接近的角,输出角编号

    分析

    找出多边形上所有角,一一比对即可

    trick

    1.判断的时候注意精度,i.e.x-eps>0
    2.double与double相除时不要立刻转化成int,可能会有误差

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    #define F(i,a,b) for(int i=a;i<=b;++i)
    #define R(i,a,b) for(int i=a;i<b;++i)
    #define mem(a,b) memset(a,b,sizeof(a))
    //#pragma comment(linker, "/STACK:102400000,102400000")
    //inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}
    int check(double x)
    {
    	if(x>(1e-6)&&x<180-(1e-6)) return 1;return 0;
    }
    int n;
    double a;
    set<double>s;
    int main()
    {
    	cin>>n>>a;
    	double x=(n-2)*1.0/n*180,y=(180-x)/2,ret=y;
    	while(check(x)&&check(y))
    	{
    		s.insert(x);s.insert(y);
    		x-=ret,y+=ret;
    	}
    	double ans=1000,num;
    	for(set<double>::iterator it=s.begin();it!=s.end();++it)
    	{
    		if(ans>abs((*it)-a)) {ans=abs((*it)-a);num=(*it);}
    	}
    	//printf("%f %f
    ",num,ret);
    	double k=num/ret;
    	printf("%d %d %.f
    ",2,1,2+k);
        return 0;
    }
    /*
    13 4
    100000 1
    */
    
  • 相关阅读:
    ajax的post请求
    ajax的get请求
    浏览器缓存机制
    php和cookie
    php表单(2)
    php和表单(1)
    枚举for/in
    .Matrix-Beta冲刺的汇总博客
    .Matrix汇总博客
    小黄衫获得的感想
  • 原文地址:https://www.cnblogs.com/chendl111/p/7116768.html
Copyright © 2011-2022 走看看