acdream 1203 解三角形

已知角a,b,c,d求角aed.(0=<a,b,c,d<90)

思路:其实和边没关系,都相似的。不妨设ab=10.0;

由正弦定理容易求出 ad,ae,余弦定理求出de。

答案就呼出来了。最后求反三角。

算法没问题。但是比赛时候一直跪。。。后来躺床上一想,哎!acrsin返回的是 (-pai/2,pai/2)!若是钝角他返回锐角啊!sb了!所以判断一下脚aed是否大于90,再做正弦定理。或者直接用arccos求,返回的是(0,pai).

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
const  double pai=3.14159265;
int main()
{
      double a,b,c,d;
    while(cin>>a>>b>>c>>d)
    {
        if(a==0||c==0)
          {
              printf("0.00\n");
              continue;
          }
        else if(b==0)
        {
            printf("%.2f\n",c);
            continue;
        }
        else if(d==0)
        {
            printf("%.2f\n",b+c);
            continue;
        }
         else
         {
             double jiao1=180.0-a-b-c;
            double jiao2=180.0-b-c-d;
             double x1=10.000;
             double x2=x1/sin(jiao1/180.0*pai)*sin(c/180.0*pai);
             double x4=x1/sin(jiao2/180.0*pai)*sin((c+d)/180.0*pai);
             double de=sqrt(x2*x2+x4*x4-cos(a/180.0*pai)*2*x2*x4);
            double ans=asin(x2*sin(a/180*pai)/de)/pai*180;
            if((de*de+x4*x4-x2*x2)/(2*x4*de)<0)
             printf("%.2f\n",180-ans);
            else printf("%.2f\n",ans);
         }
    }
 return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值