题意:给出一点,几个圆的圆心半径,问两条切线与x轴相交组成的区间,然后合并一下。
这题我用解析做,精度损失的太高wa,然后又用极角做,还是精度问题,不过好把数的值扩大一些加上了eps之后过了。
具体看代码。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct seg
{
double l,r;
};
double dis(double lx,double ly,double cx,double cy)
{
return sqrt((lx-cx)*(lx-cx)+(ly-cy)*(ly-cy));
}
bool cmp(seg a,seg b)
{
return a.l<b.l;
}
double getx(double angle,double lx,double ly)
{
return lx-((ly)/tan(angle));
}
int main()
{
int n,i;
seg g[505];
double eps=1e-8;
double lx,ly,cx,cy,r;
while(~scanf("%d",&n),n)
{
scanf("%lf%lf",&lx,&ly);
for(i=0; i<