同題:UVa 11455 – Behold my quadrangle
任一正方形都是矩形,任一矩形都是四邊形,且任一四邊形都有四個邊。但是並非所有的矩形都是正方形,並非所有的四邊形都是矩形,並非任四個邊都可以構成四邊形。
問題:有了四個邊的長度,你必須判斷它們是否可以構成一個正方形。不行的話,判斷它們是否可以構成一個矩形。不行的話,判斷它們是否可以構成一個四邊形。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入的第一行包含一個整數表示有幾筆測試資料。 每筆測試資料一行,包含四個介於 0 和 230 的正整數。 | 就每筆測試資料,如果該筆料可以構成正方形、矩形、四邊形、或都不行,請分別輸出「square」、「rectangle」、「quadrangle」或「banana」於一行。 |
4 10 8 7 6 9 1 9 1 29 29 29 29 5 12 30 7 | quadrangle rectangle square banana |
解題思路
將四個邊長收到 Vector 中,並且進行排序。
正方形:四邊等長
長方形:前兩邊相等、後兩邊相等
四邊形:前三個邊的和「大於」第四個邊
非四邊形:Else
範例程式碼-ZeroJudge D260: Behold my quadrangle
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for (int i = 0; i<N; i++)
{
vector<int>num;
bool zero = false;
for (int j = 0; j<4; j++)
{
int tmp;
cin >> tmp;
num.push_back(tmp);
if (tmp == 0) zero = true;
}
if (zero)
{
cout << "banana\n";
continue;
}
sort(num.begin(), num.end());
if (num[0] == num[1] && num[1] == num[2] && num[2] == num[3]) cout << "square\n";
else if (num[0] == num[1] && num[2] == num[3]) cout << "rectangle\n";
else if (num[0] + num[1] + num[2] > num[3]) cout << "quadrangle\n";
else cout << "banana\n";
}
}
//ZeroJudge D260
//Dr. SeanXD