hdu 3903 Trigonometric Function

2014-11-24 09:16:03 · 作者: · 浏览: 0

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

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

a,b,c是三角形三条吧,m,n,k是三个整数,求vcdjb3MmIzIwNTQwO7a8ysfT0MDtyv2ho9a7xdC2z3NpbiYjMjA1NDA7PC9wPgo8cD5zaW4mIzIwNTQwO8XQts+3vbeoysfI53NpbiBhPXNhPXNxcnQoMipiKmMpKigyKmIqYyktKGIqYiYjNDM7YypjLWEqYSkqKGIqYiYjNDM7YypjLWEqYSk7xdC2z8bkyse38cTcv6q4+brFvs1va6GjPC9wPgo8cD48YnI+CjwvcD4KPHA+tMvM4tK70KnI/b3Huq/K/baowO08YnI+CjwvcD4KPHA+tPrC66O6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">#include #include 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
  
   
#include
   
     #include
    
      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; }