给定四个正整数(范围在0-2的30次方之间)用来表示四条边长,根据这四条边长判断,是否能组成正方形(仅判断边长,不考虑夹角)?能,则输出"square";不能,则判断是否能组成矩形(仅判断边长,不考虑夹角)?能,则输出"rectangle";不能,则再判断是否能组成四边形?能,则输出"quadrangle",否则输出"banana"
从题意来看,就是简单考虑边长的问题,不用考虑夹角。所以,判断正方形还是长方形,或者仅仅是四边形,或者啥也不是(banana),就只需要对输入的正整数排序,然后简单比较即可。
python版本AC代码
testcase = int(input())
while testcase >0:
testcase -= 1
s = list(map(int,input().split()))
s.sort()
if s[0] == s[3]:
print('square')
else:
if s[0] == s[1] and s[2]==s[3]:
print('rectangle')
elif s[0] + s[1] + s[2] <= s[3]:
print('banana')
else:
print('quadrangle')
C++版本AC代码
#include <iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
//#define ZANGFONG
int s[4];
int main()
{
#ifdef ZANGFONG
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif // ZANGFONG
int testcase;
scanf("%d\n",&testcase);
while(testcase--)
{
scanf("%d%d%d%d\n",&s[0],&s[1],&s[2],&s[3]);
sort(s,s+4);
if(s[0]==s[1]&&s[1]==s[2]&&s[2]==s[3]) printf("square\n");
else
{
if(s[0]==s[1] && s[1] != s[2] && s[2]==s[3]) printf("rectangle\n");
else if(s[0]+s[1]+s[2] <= s[3]) printf("banana\n");
else printf("quadrangle\n");
}
}
return 0;
}