# Sorting# Conditional Logic# Basic Math

c294 - APCS-2016-1029-1三角形辨別

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀入三個整數,判斷這三個整數是否能構成三角形,如果能構成,則判斷三角形的類型(銳角、直角、鈍角)。

解題思路

首先,將輸入的三個數字進行排序,方便後續判斷。然後,根據三角形的判斷規則:

  1. 如果任意兩邊之和小於或等於第三邊,則無法構成三角形。
  2. 如果兩邊平方和等於第三邊平方,則為直角三角形。
  3. 如果兩邊平方和小于第三邊平方,則為鈍角三角形。
  4. 如果兩邊平方和大于第三邊平方,則為銳角三角形。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
	int a[3]={0};
	while(cin >> a[0] >> a[1] >> a[2]){
		sort(a,a+3);
		cout << a[0] << " "<< a[1]  << " "<< a[2]  << endl;
		if(a[0]+a[1]<=a[2])
			cout << "No\n";
		else if(a[0]*a[0]+a[1]*a[1]<a[2]*a[2])
			cout << "Obtuse\n";
		else if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2])
			cout << "Right\n";
		else
			cout << "Acute\n";
	}
}

Discussion