码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 12901 Refraction

时间:2015-07-16 21:38:01      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

一道数学题,解个2次方程就行了。。。

技术分享

主要的几个式子

技术分享

技术分享

技术分享

#include<cstdio>
#include<cmath>

int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int W,H,x,xe,ye;
        double u;
        scanf("%d%d%d%d%d%lf",&W,&H,&x,&xe,&ye,&u);
        int Y = ye - H, X = xe - W;
        int C = X*ye-Y*(xe-x);
        int X2 = X*X, Y2 = Y*Y;
        double lamda = (u*u)*(X2+Y2) - X2;
        double a = (lamda - Y2)*X2;
        double b = -2*X*lamda*C;
        double c = lamda*C*C;
        double delta = b*b - 4*a*c;
        if(delta>=0){
            double h = (sqrt(delta) - b)/(2*a);
            if(h>H) printf("Impossible\n");
            else {
                if(h < 0) printf("0\n");
                else printf("%.4lf\n",h);
            }
        }else {
            printf("Impossible\n");
        }
    }

    return 0;
}

 

UVA 12901 Refraction

标签:

原文地址:http://www.cnblogs.com/jerryRey/p/4652419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!