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要初始化!!
只有两种情况 两横一竖和三个横的