H - 三大只的默契度

Description

 

大家都知道实验室里小莉,小晨和小芹是非常非常要好的朋友,但是最近呢,这三个人感觉真的是太无聊太无聊太无聊了!有天,小莉突发奇想,想来测试一下她们仨的默契程度。她们三个人每人都自己找了一个矩形的木板,看这三个木板能不能拼成一个正方形。如果能,那就代表着她们真是的很有很有默契的咯~如果不能,或许就没有那么有默契辣。这可把小莉愁坏了啊,她们到底有没有默契呀?你能帮帮她吗?

 

Input

 

输入包括三行,第一行代表第一个矩形的长h(h<1000)和宽w(w<1000),第二行代表第二个矩形的长h(h<1000)和宽w(w<1000),第三行代表第三个矩形的长h(h<1000)和宽w(w<1000)。

 

Output

 

输出单行结果,如果有默契请输出“YES”,否则输出“NO”,输出没有双引号。

 

Sample Input

8 2
1 6
7 6

 

Sample Output


 

YES 

 

#include <iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<math.h>
using namespace std;

int main()
{
    long long sum=0;
    int a[4],b[4],l,flag=0,j,k,i,n=0;            
    for(i=0;i<3;i++)
    {
        scanf("%d%d",&a[i],&b[i]); sum+=a[i]*b[i];
        if(a[i]<=b[i])
        { int t=a[i]; a[i]=b[i];                           //交换长和宽的位置
            b[i]=t;
        }
    }
    l=sqrt(sum*1.0);
    if(l*l==sum)
    {
       for(int i=0;i<3;i++)                                 
       {
           if(a[i]==l)
           {
               j=(i+1)%3;
               k=(i+2)%3;
                if(a[j]==l&&a[k]==l&&b[i]+b[j]+b[k]==l)       
                   flag=1;
                else if(b[i]+a[j]==l&&b[j]+b[k]==l&&a[j]==a[k])       //j和k的长相等

                   flag=1;  
                else if(b[j]==b[k]&&b[j]+b[i]==l&&a[j]+a[k]==l)       //j和k的宽相等
                    flag=1;
                else if(a[j]==b[k]&&b[j]+a[k]==l&&b[k]+b[i]==l)     //j的长和k的宽
                    flag=1;
                else if(b[j]==a[k]&&a[k]+b[i]==l&&b[k]+a[j]==l)     //j的宽和k的长
                    flag=1;
           }
       }

    }


    if(flag==0)
        printf("NO\n");
    else
        printf("YES\n");
    return 0;
}

 

样例  1 4 4 10 10 10

flag要初始化!!

只有两种情况 两横一竖和三个横的

 

 

 

阅读更多
个人分类: 数学
上一篇模板
下一篇dfs与bfs
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭