1131 - 喵哈哈村的几何大师╰☆莣メ誋こ月
Time Limit:1s Memory Limit:256MByte
Submissions:280Solved:60
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
110 70 20 60
SAMPLE OUTPUT
20.00
解题思路:
就是根据正弦定理和余弦定理进行推导出公式,具体见下图:
代码如下:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-12;
int main()
{
int T;
scanf("%d",&T);
double A, B, C, D;
while(T--){
cin>>A>>B>>C>>D;
A = A/180*PI; B = B/180*PI;
C = C/180*PI; D = D/180*PI;
double e = sin(A+B)/sin(A+B+C+D);
double a = sin(D)/sin(A+B+D);
double b = sin(C+D)/sin(B+C+D);
double d = sin(B)/sin(B+C+D);
double c = sqrt((e-a)*(e-a)+(e-d)*(e-d)-cos(PI-A-B-C-D)*2*(e-a)*(e-d));
double E = (b*b+c*c-a*a)/(2.0*b*c);
printf("%.2f\n",acos(E)/PI*180);
}
return 0;
}