Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么我G++能过 C++就不能过呢 这是什么原因 请大牛说说可能的原因 代码附上#include <iostream> #include <math.h> using namespace std; #define MAX_S 500 #define max(x,y) (x>y?x:y) #define min(x,y) (x<y?x:y) struct Pipe { double x; double y; double r; }; bool judge(Pipe & p1,Pipe & p2) { double x,y; x=max(p1.x,p2.x); y=min(p1.y,p2.y); if(x>y)return false; p2.x=min(p1.x,p2.x); p2.y=max(p1.y,p2.y); return true; } Pipe pipe[MAX_S]; Pipe result[MAX_S]; double myx,myy; int cmp(const void * a,const void * b) { Pipe * A=(Pipe *)a; Pipe * B=(Pipe *)b; if(A->x<B->x)return -1; return 1; } #define EPS 1e-10 void fun(Pipe & p) { double d,cta,l; double k,k1,k2; d=sqrt((myx-p.x)*(myx-p.x)+(myy-p.y)*(myy-p.y)); cta=asin(p.r/d); if(fabs(p.x-myx)<=EPS)//圆心坐标与光源坐标相同// { l=myy*tan(cta); p.x=myx-l,p.y=myx+l; } else if(fabs(p.x+p.r-myx)<=EPS) { l=myy*tan(2*cta); p.x=myx-l; p.y=myx; } else if(fabs(p.x-p.r-myx)<=EPS) { l=myy*tan(2*cta); p.x=myx; p.y=myx+l; } else { k=(myy-p.y)/(myx-p.x); k1=(k-tan(cta))/(1+k*tan(cta)); k2=(k+tan(cta))/(1-k*tan(cta)); p.x=myx-myy/k1; p.y=myx-myy/k2; } } int main() { //freopen("in.txt","r",stdin); int n,i,j,k; while(1) { scanf("%d%lf%lf",&n,&myx,&myy); if(n==0)break; for(i=0;i<n;i++) { scanf("%lf%lf%lf",&pipe[i].x,&pipe[i].y,&pipe[i].r); fun(pipe[i]); } int queue[MAX_S]; int pf=0; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(judge(pipe[i],pipe[j]))break; } if(j==n)queue[pf++]=i; } queue[pf++]=n-1; for(i=0;i<pf;i++) { result[i]=pipe[queue[i]]; } qsort(result,pf,sizeof(Pipe),cmp); for(i=0;i<pf;i++) { printf("%0.2lf %0.2lf\n",result[i].x,result[i].y); } printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator