喵哈哈村的几何大师╰☆莣メ誋こ月

喵哈哈村的几何大师╰☆莣メ誋こ月

Time Limit:1s Memory Limit:256MByte

Submissions:269Solved:57

DESCRIPTION

╰☆莣メ誋こ月是月大叔的ID,他是一个掌握着429种几何画法的的几何大师,最擅长的技能就是搞事,今天他又要开始搞事了。

给你一个等腰三角形,其中A,B,C,D角已知,求E角的角度。

INPUT
输入第一行包含一个正整数t(1t100)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
",180.0/pi*acos((ret[6]*ret[6]+ret[7]*ret[7]-ret[5]*ret[5])/(2*ret[6]*ret[7])));
    }
    return 0;
}
原文地址:https://www.cnblogs.com/dyzll/p/6921943.html