【題解】ZeroJudge d980: 11479 – Is this the easiest problem?

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=d980
【解題想法】

  • 先將三個邊長 (a[0], a[1], a[2]) 由小到大排序。
  • 當 a[0] <= 0 時,無法形成一個三角形。
  • a[0] = a[2]:三邊均等長。
  • a[0] = a[1] 或 a[1] = a[2]:恰有兩邊等長
  • 三邊均不等長的情況下,需判斷是否能構成合法三角形:檢查 a[0] + a[1] > a[2] 是否成立。
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int T;
    long long a[3];
    cin >> T;
    for (int Case = 1; Case <= T; Case++){
        cin >> a[0] >> a[1] >> a[2];
        sort(a, a+3);
        cout << "Case " << Case << ": ";
        if (a[0] <= 0) {
            cout << "Invalid\n";
        } else if (a[0] == a[2]){
            cout << "Equilateral\n";
        } else if (a[0] == a[1] || a[1] == a[2]){
            cout << "Isosceles\n";
        } else {
            if (a[0] + a[1] > a[2]) cout << "Scalene\n";
            else cout << "Invalid\n";
        }
    }
    return 0;
}

Python code (credit: Amy Chou)

import sys

lines = sys.stdin.readlines()

T = int(lines[0])

for Case in range(1, T+1):
    print(f"Case {Case}: ", end="")
    a = list(map(int, lines[Case].split()))
    a.sort()
    if a[0] <= 0:
        print("Invalid")
    elif a[0] == a[2]:
        print("Equilateral")
    elif a[0] == a[1] or a[1] == a[2]:
        print("Isosceles")
    else:
        if a[0] + a[1] > a[2]:
            print("Scalene")
        else:
            print("Invalid")
分享本文 Share with friends