d980 - 11479 - Is this the easiest problem?
題目描述
題目要求判斷給定的三條邊長是否能構成一個三角形,並根據邊長關係判斷三角形的種類(等邊、等腰、不等邊或無效)。
解題思路
程式首先讀取測試案例的數量。對於每個案例,讀取三條邊長 a、b 和 c。然後,檢查這三條邊長是否都為正數。如果不是,則輸出 "Invalid"。如果都是正數,則檢查是否滿足三角形不等式(任意兩邊之和必須大於第三邊)。如果滿足三角形不等式,則根據邊長關係判斷三角形種類:如果三邊相等,則輸出 "Equilateral";如果恰好兩邊相等,則輸出 "Isosceles";否則,輸出 "Scalene"。如果三角形不等式不成立,則輸出 "Invalid"。
複雜度分析
- 時間複雜度: O(T),其中 T 是測試案例的數量。因為對於每個案例,只需要進行常數次比較和判斷。
- 空間複雜度: O(1),因為程式只使用了常數個變數來儲存邊長和結果。
程式碼
#include <iostream>
using namespace std;
int main(){
long long int n=0;
long long int a,b,c=0;
cin >> n;
for(long long int i=1;i<=n;i++){
cin >> a >> b >> c;
cout << "Case " << i << ": " ;
if(a>0&&b>0&&c>0){
if(a+b>c&&b+c>a&&a+c>b){
if(a==b&&b==c){
cout << "Equilateral";
}
else if(c==a){
cout << "Isosceles";
}
else if(a==b){
cout << "Isosceles";
}
else if(b==c){
cout << "Isosceles";
}
else {
cout << "Scalene";
}
}
else {
cout << "Invalid";
}
}
else{
cout << "Invalid";
}
cout << endl;
}
}