hdu 3903 Trigonometric Function

这是一周周赛的一道题目,是其中最简单的。

当时一直卡在一道dp上,没有时间做。这是一道数学题目。

a,b,c是三角形三条吧,m,n,k是三个整数,求是否为有理数。

看了一些三角函数的一些定理,三角形每个角cos值都是有理数。只判断sin值

sin值判断方法是如sin a=sa=sqrt(2*b*c)*(2*b*c)-(b*b+c*c-a*a)*(b*b+c*c-a*a);判断其是否能开根号就ok。


此题一些三角函数定理

代码:

#include <cstdio>
#include <cmath>
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        __int64 a,b,c,n,m,k;
        scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&n,&m,&k);
        long long sa,sb,sc;
        sa=(2*b*c)*(2*b*c)-(b*b+c*c-a*a)*(b*b+c*c-a*a);
        sb=(2*a*c)*(2*a*c)-(a*a+c*c-b*b)*(a*a+c*c-b*b);
        sc=(2*a*b)*(2*a*b)-(a*a+b*b-c*c)*(a*a+b*b-c*c);
        long long la=sqrt(sa),lb=sqrt(sb),lc=sqrt(sc);
        if(la*la==sa&&lb*lb==sb&&lc*lc==sc)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

还有人家的方法,根据三角形面积判断的。更容易理解。

三角形面积s=0.5*a*b*sinc;

s是否为有理数只和sinc有关,那么只用判断面积是否为有理数就行了、注意直角

#include<stdio.h>
#include<algorithm>
#include<math.h>

using namespace std;

int a[3];

bool judge(int tmp)
{
    int t;
    t=(int)sqrt(tmp*1.0);
    if(t*t==tmp)
        return true;
    else
        return false;
}

int main()
{
    int t,n,m,k,p,tmp;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d%d%d%d",&a[0],&a[1],&a[2],&n,&m,&k);
        sort(a,a+3);
        p=(a[0]+a[1]+a[2]);
        if(p&1)
        {
            printf("NO\n");
            continue;
        }
        p=p/2;
        tmp=p*(p-a[0])*(p-a[1])*(p-a[2]);
        if(judge(tmp))
            printf("YES\n");
        else
        {
            if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2])
                printf("YES\n");
            else
                printf("NO\n");
        }
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值