喵哈哈村的几何大师╰☆莣メ誋こ月
喵哈哈村的几何大师╰☆莣メ誋こ月
Time Limit:1s Memory Limit:256MByte
Submissions:269Solved:57
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
分析:应用正弦余弦定理,如图所示暴力求出各边;
最后余弦定理求角,考察高中数学知识,233;
代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #include <set> #include <bitset> #include <map> #include <queue> #include <stack> #include <vector> #include <cassert> #include <ctime> #define rep(i,m,n) for(i=m;i<=n;i++) #define mod 1000000007 #define inf 0x3f3f3f3f #define vi vector<int> #define pb push_back #define mp make_pair #define fi first #define se second #define ll long long #define pi acos(-1.0) #define pii pair<int,int> #define sys system("pause") #define ls rt<<1 #define rs rt<<1|1 const int maxn=1e5+10; const int N=2e5+10; using namespace std; ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);} ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p%mod;p=p*p%mod;q>>=1;}return f;} int n,m,k,t; double ret[9]; int main() { int i,j; scanf("%d",&t); while(t--) { double a,b,c,d; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); a=a*pi/180,b=b*pi/180,c=c*pi/180,d=d*pi/180; ret[1]=1.0/sin(pi-a-b-d)*sin(d); ret[2]=1.0/sin(pi-c-d-b)*sin(b); ret[3]=1.0/sin(pi-b-d)*sin(d); ret[4]=1.0/sin(pi-b-d)*sin(b); ret[5]=sqrt(ret[1]*ret[1]+ret[3]*ret[3]-2*ret[1]*ret[3]*cos(a)); ret[6]=sqrt(ret[2]*ret[2]+ret[4]*ret[4]-2*ret[2]*ret[4]*cos(c)); ret[7]=sqrt(ret[1]*ret[1]+(ret[3]+ret[6])*(ret[3]+ret[6])-2*ret[1]*(ret[3]+ret[6])*cos(a)); printf("%.2f\n",180.0/pi*acos((ret[6]*ret[6]+ret[7]*ret[7]-ret[5]*ret[5])/(2*ret[6]*ret[7]))); } return 0; }