b578 - 一個角
題目描述
題目要求判斷給定的三條邊長 a, b, c 是否能構成一個銳角三角形、直角三角形或鈍角三角形。輸入包含多組測試資料,每組資料包含三個正整數 a, b, c,代表三角形的三邊長。
解題思路
解題的核心是利用勾股定理判斷三角形的類型。首先,確定 c 是最長的邊,如果不是,則與 a 或 b 進行交換。然後,計算 a^2 + b^2 和 c^2 的值。如果 a^2 + b^2 等於 c^2,則為直角三角形;如果 a^2 + b^2 大於 c^2,則為銳角三角形;如果 a^2 + b^2 小於 c^2,則為鈍角三角形。
複雜度分析
- 時間複雜度: O(T),其中 T 是測試資料的數量。對於每組測試資料,進行常數次數的比較和計算。
- 空間複雜度: O(1),只使用了常數個變數來儲存輸入和計算結果。
程式碼
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
cin.tie(0); ios::sync_with_stdio(false);
long double n,a,b,c;
cin>>n;
while(n--){
cin>>a>>b>>c;
if(c<a)
swap(c,a);
if(c<b)
swap(c,b);
c*=c;
a*=a;
b*=b;
a+=b;
if(c==a)
cout << "right triangle\n";
else if(c>a)
cout << "obtuse triangle\n";
else
cout << "acute triangle\n";
}
return 0;
}