题目链接:http://www.ifrog.cc/acm/problem/1131
1131 - 喵哈哈村的几何大师╰☆莣メ誋こ月
Time Limit:1s Memory Limit:256MByte
Submissions:314Solved:69
DESCRIPTION
╰☆莣メ誋こ月是月大叔的ID,他是一个掌握着429种几何画法的的几何大师,最擅长的技能就是搞事,今天他又要开始搞事了。
给你一个等腰三角形,其中A,B,C,D角已知,求E角的角度。
INPUT
输入第一行包含一个正整数
t(1≤t≤100) ,表示有t组数据对于每组数据:第二行四个整数,A,B,C,D表示度数。满足A+B=C+D且A+B<90
OUTPUT
对于每组测试数据的询问,输出E角的度数,请保留两位小数。
SAMPLE INPUT
1
10 70 20 60
SAMPLE OUTPUT
20.00
SOLUTION
解析:设底边为1,分别运用sin,cos正余弦公式求边,最后求下角
代码:
#include<bits/stdc++.h>
#define N 3009
using namespace std;
const double pi = acos(-1.0);
int main()
{
//cout << asin(0.5) /pi*180.0<< endl;
int t;
double a, b, c, d;
cin >> t;
while(t--)
{
scanf("%lf%lf%lf%lf", &a, &b, &c, &d);
double b1, b2, b3, b4, b5;
b1 = sin(d/180.0*pi)/sin(pi-(b+d)/180.0*pi);
b2 = sin(b/180.0*pi)/sin(pi-(b+d)/180.0*pi);
b3 = sin((a+b)/180.0*pi)/sin(pi-(a+b+d)/180.0*pi) - b2;
b4 = sin((c+d)/180.0*pi)/sin(pi-(b+c+d)/180.0*pi) - b1;
b5 = b3*b3+b4*b4-2.0*b3*b4*cos(pi-(b+d)/180.0*pi); b5 = sqrt(b5);
//不知道为什么WA
//double x = b3/b5*sin(pi-(b+d)/180.0*pi);
//printf("%.2f\n", asin(x)/pi*180.0);
double x = (b4*b4+b5*b5-b3*b3)/2.0/b4/b5;
printf("%.2f\n", acos(x)/pi*180.0);
}
return 0;
}