熱門文章

2026年5月17日 星期日

ZeroJudge 解題筆記:d260. 11455 - Behold my quadrangle

作者:王一哲
日期: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;
}


沒有留言:

張貼留言