Description
古希腊柏拉图学院的门口竖着一块牌子"不懂几何者慎入"。Julyana是一个超级大学霸,作为一个去过古希腊柏拉图学院的人(梦里经常去),她经常去帮她的学弟学妹们解决一些数学难题。这次一位高中的小学弟给Julyana提出了一个几何问题,可是Julyana太忙了,只能让你们这些从高中毕业不久的童鞋们帮他来解决了。题目如下:有一正四棱柱,给出底面(即正方形面)边长a和侧面(即矩形)边长b,让你求出底面对角线和侧面对角线的最短距离L(注:底面对角线与侧面对角线没有交点)。图如下:
Input
输入一行T(T<=500),代表样例数。
接下来T行,每行两个整数,底面边长a(0<a<=1000),侧面边长(0<b<=1000)。
Output
对于每个样例,输出一个实数L,代表最短距离(保留4位小数)。
Sample Input
1
1 1
Sample Output
0.5774
这道题就是简单的高中计算异面直线的距离。
根据公式(AB*n)/|n|为异面直线的距离,首先设异面直线的公共法向量n=(x,y,z).之后代入公式即可~~~
代码如下:
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int t,a,b;
cin >> t;
while(t--)
{
cin >> a >> b;
double p=sqrt((1.0*a*a)/(b*b)+2);
printf("%.4lf\n",1.0*a/p);
}
return 0;
}