题目连接:点击打开链接
J -- 喵哈哈村的几何大师╰☆莣メ誋こ月
Time Limit:1s Memory Limit:256MByte
Submissions:317Solved:71
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
题目分析:可以使用三角函数正余弦定理进行推导,考虑到精度问题,这里只针对包含a和e2角的三角形进行求解,首先通过正弦定理得到边长,再通过余弦定理求角。不过做完才发现,这个等腰的条件用上了吗??我猜可能有其他几何的方法。
//
// main.cpp
// 喵哈哈村的战斗魔法师丶坏坏い月
//
// Created by teddywang on 2017/6/27.
// Copyright © 2017年 teddywang. All rights reserved.
//
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
double pi=3.14159265;
using namespace std;
double a,b,c,d,e,f;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
cin>>a>>b>>c>>d;
double DE,A,BD,BE;
A=180-a-b-c-d;
A=A*M_PI/180;
a=a*M_PI/180;
b=b*M_PI/180;
c=c*M_PI/180;
d=d*M_PI/180;
BD=sin(d)/sin(A+c);
BE=sin(c+d)/sin(A+a);
DE=BD*BD+BE*BE-2*BD*BE*cos(a);
double de=sqrt(DE);
e=(DE+BE*BE-BD*BD)/(2*BE*de);
e=acos(e);
e=e*180/M_PI;
printf("%.2lf\n",e);
}
}