# Math# Sorting# Conditional

j037 - 11854 - Egypt

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的三條邊長是否能構成一個直角三角形。輸入為三條邊長,輸出 "right" 如果是直角三角形,否則輸出 "wrong"。輸入 0 0 0 時結束程式。

解題思路

解題思路是先將三條邊長排序,然後檢查最小兩邊的平方和是否等於最大邊的平方。如果相等,則為直角三角形,輸出 "right",否則輸出 "wrong"。利用排序可以方便地找到最大邊和最小兩邊。

複雜度分析

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

程式碼

#include <iostream>
#include <algorithm>
using namespace std;
int a[3];
int main(){
	while(1){
		for(int i=0;i<3;++i)cin >> a[i];
		if(a[0]+a[1]+a[2]==0)return 0;
		sort(a,a+3);
		if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2])cout << "right\n";
		else cout << "wrong\n";
	}
}

Discussion