资格赛 Problem C

Problem C: Ball

 

Description

 

给出空间上两个运动的小球,球心坐标在分别是A(xa , ya , 0)B(xb , yb , 0),半径分别为Ra , Rb,速度分别为Va( vax, vay , 0), Vb( vbx , vby, 0)。判断两个小球是否会碰撞,若会碰撞, 输出首次碰撞时的时刻和两个小球的坐标;若不会碰撞,输出“Impossible”(球心和速度的z坐标恒为0,可将本题视为只是平面上的运动。初始时刻为0,若初始时刻小球贴在一起,视为首次碰撞)。

 

Input

 

第一行:一个整数T,(T 30),表示下面有T组数据。

接下来,每两行组成一组数据,首行包含5个实数,用空格隔开,依次是xa , ya , vax, vay , Ra,下面一行也包含5个实数,依次是xa , ya , vbx , vby, Rb。每组数据之间有一个空行。

 

Output

 

对于每组数据,如果两个小球会碰撞,输出首次碰撞时的时刻t,和两个小球的坐标xap , yap , xbp , ybp ,用空格隔开,保留三位小数。如果不能,输出“Impossible”。

 

Sample Input

3

100 200 0 0 55

100 100 0 0 45

 

131 123 45 2 43

454 230 0 -5 35

 

100 100 1 1 31

200 200 2 2 23

 解一元二次方程。

#include <iostream>
#include 
<cmath>
int main(){
    
int ca,flag;
    
double xa,ya,xb,yb,vax,vay,vbx,vby,ra,rb;
    
double x1,x2,y1,y2,a,b,c,t,t1,t2,r;
    scanf(
"%d",&ca);
    
while(ca--){
        scanf(
"%lf %lf %lf %lf %lf",&xa,&ya,&vax,&vay,&ra);
        scanf(
"%lf %lf %lf %lf %lf",&xb,&yb,&vbx,&vby,&rb);
        r
=(ra+rb),x1=xa-xb,x2=vax-vbx,y1=ya-yb,y2=vay-vby;
        a
=x2*x2+y2*y2,b=2*x1*x2+2*y1*y2,c=x1*x1+y1*y1-r*r;
        flag
=0;
        
if(c<=0)
            printf(
"%.3lf %.3lf %.3lf %.3lf %.3lf\n",0.000,xa,ya,xb,yb);
        
else if(a==0) flag=1;
        
else if(b*b-4*a*c<0) flag=1;
        
else{
            t1
=(-b+sqrt(b*b-4*a*c))/(2*a);
            t2
=(-b-sqrt(b*b-4*a*c))/(2*a);
            t
=(t1<t2 && t1>=0? t1:t2;
            
if(t<0) flag=1;
            
else printf("%.3lf %.3lf %.3lf %.3lf %.3lf\n",t,xa+vax*t,ya+vay*t,xb+vbx*t,yb+vby*t);
        }

        
if(flag) puts("Impossible");
    }

    
return 0;
}

 

Sample Output

0.000 100.000 200.000 100.000 100.000

6.179 409.053 135.358 454.000 199.105

Impossible

posted on 2009-05-10 18:56 极限定律 阅读(727) 评论(1)  编辑 收藏 引用 所属分类: 腾讯2009程序设计大赛

评论

# re: 资格赛 Problem C 2009-07-10 21:43 QQ:906091877

你的代码还不能抵抗强的测试数据,还需要修改  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(10)

随笔分类

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜