# Geometry# Math# Conditional Logic# Input/Output

b578 - 一個角

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的三條邊長 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;
}

Discussion