【題目敘述】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")