日期:2026年5月17日
ZeroJudge 題目連結:d260. 11455 - Behold my quadrangle
解題想法
先將 4 個邊排序後分別存入 $a, b, c, d$,如果 $a, b, c, d$ 皆相等,輸出 square;如果 $a$ 等於 $b$ 且 $c$ 等於 $d$,輸出 rectangle;如果 $a + b + c > d$,輸出 quadrangle;其它狀況輸出 banana。
Python 程式碼
使用時間約為 22 ms,記憶體約為 8.4 MB,通過測試。
T = int(input())
for _ in range(T):
a, b, c, d = sorted(map(int, input().split()))
if a == b == c == d:
print("square")
elif a == b and c == d:
print("rectangle")
elif a + b + c > d:
print("quadrangle")
else:
print("banana")
如果是多筆測資可以改成這樣,使用時間約為 15 ms,記憶體約為 8.2 MB,通過測試。
def solve():
import sys
result = []
data = sys.stdin.read().split()
ptr = 0
while ptr < len(data):
T = int(data[ptr])
ptr += 1
for _ in range(T):
a, b, c, d = sorted(map(int, data[ptr:ptr+4]))
ptr += 4
if a == b == c == d:
result.append("square\n")
elif a == b and c == d:
result.append("rectangle\n")
elif a + b + c > d:
result.append("quadrangle\n")
else:
result.append("banana\n")
sys.stdout.write("".join(result))
if __name__ == "__main__":
solve()
C++ 程式碼
使用時間約為 1 ms,記憶體約為 1.4 MB,通過測試。
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int T; scanf("%d", &T);
for(int t=0; t<T; t++) {
int edges[4];
for(int i=0; i<4; i++) {
scanf("%d", &edges[i]);
}
sort(edges, edges+4);
if (edges[0] == edges[1] && edges[0] == edges[2] && edges[0] == edges[3]) {
puts("square");
} else if (edges[0] == edges[1] && edges[2] == edges[3]) {
puts("rectangle");
} else if (edges[0] + edges[1] + edges[2] > edges[3]) {
puts("quadrangle");
} else {
puts("banana");
}
}
return 0;
}
沒有留言:
張貼留言