1131 - 喵哈哈村的几何大师╰☆莣メ誋こ月
Time Limit:1s Memory Limit:256MByte
Submissions:249Solved:48
DESCRIPTION
╰☆莣メ誋こ月是月大叔的ID,他是一个掌握着429种几何画法的的几何大师,最擅长的技能就是搞事,今天他又要开始搞事了。
给你一个等腰三角形,其中A,B,C,D角已知,求E角的角度。
INPUT
输入第一行包含一个正整数
t(1≤t≤100)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
思路:
随便套套余弦定理的公式和正弦定理的公式就能解决的问题。
然而Wa到死。
注意已知一个角的sin值,如果用arcsin来求角度的话,默认输出较小角的值。
所以求角度的时候应该用arccos= =
智障了= =比赛过程中卡了3个小时这个题= =
Ac代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<set>
#include<queue>
#include<map>
#include<cmath>
#define N 200005
#define LL long long
using namespace std;
int T;
const double PI=acos(-1);
double hudu(double du)
{
double huduu=(double)PI/(double)180*du;
return huduu;
}
int main()
{
// freopen("D:\\j1.in", "r", stdin);
// freopen("D:\\5out.txt", "w", stdout);
int t;
scanf("%d",&t);
while(t--)
{
double a,b,c,d;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
double A=1;
double ss=180.0;
double tmp=ss-a-b-c-d;
double C=sqrt(A*A+A*A-2.0*A*A*cos(hudu(tmp)));
double f=ss-b-c-d;
double D=C*sin(hudu(b))/sin(hudu(f));
double g=ss-b-d;
double h=ss-g;
double E=D*sin(hudu(c))/sin(hudu(h));
double x=ss-a-b-d;
double G=C*sin(hudu(d))/sin(hudu(x));
double F=G*sin(hudu(a))/sin(hudu(h));
double Z=sqrt(E*E+F*F-2.0*E*F*cos(hudu(g)));
double coseee=(E*E+Z*Z-F*F)/(2*E*Z);
double ans=(double)ss/PI*acos(coseee);
printf("%.2lf\n",ans);
}
}