玲珑学院OJ 1131 - 喵哈哈村的几何大师╰☆莣メ誋こ月【高中数学】

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

Time Limit:1s Memory Limit:256MByte

Submissions:249Solved:48

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

思路:


随便套套余弦定理的公式和正弦定理的公式就能解决的问题。

然而Wa到死。

注意已知一个角的sin值,如果用arcsin来求角度的话,默认输出较小角的值。

所以求角度的时候应该用arccos= =

智障了= =比赛过程中卡了3个小时这个题= =


Ac代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#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);
    }
}









你可能感兴趣的:(计算几何)