把他们都投影到一个平面上, 然后用余弦定理去求解 能够得到方程, 直接写出 答案的表达式;
这个题需要注意的就是四舍五入的, 直接用 .0lf
会WA,
这里用到一个技巧, 就是先把double类型的都先加0.5
然后在用int去强制转换, 舍弃掉小数部分;
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const double pi = 3.141592653589793;
double t(double a){
return tan(pi / 180 * a);
}
double f(double a, double b, double c, double n){
double zi = 2 * n*n * a*a * b*b * c*c;
double mu = c*c * b*b + a*a * b*b - 2 * a*a * c*c;
return sqrt(zi/mu);
}
int main(){
double D, H, a, b, c;
scanf("%lf%lf", &D, &H);
while(scanf("%lf%lf%lf", &a, &b, &c) == 3){
if(a<=0 || b<=0 || c<=0) break;
double ans = f(t(a), t(b), t(c), D) + H + 0.5;
printf("%d\n", (int)ans);
}
return 0;
}