• toc {:toc}

문제

https://www.acmicpc.net/upload/images3/rope-triangle.gif

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 “right”, 아니라면 “wrong”을 출력한다.

출처:https://www.acmicpc.net/problem/4153

<풀이>

  1. 피타고라스의 공식 사용. 빗변의 제곱 = 밑변의 제곱+높이의 제곱
  2. 더 나은 풀이 생각해보기
#include <iostream>
 
using namespace std;
#define pow(x) x*x
 
bool Pythagoras(int x, int y, int z);
 
int main() 
{
  	int x, y, z;
	while(true)
	{
		cin >> x >> y >> z;
		if(x==0&&y==0&&z==0)
			break;
		if(Pythagoras(x, y, z))
		{
			cout << "right" << endl;
			continue;
		}
		cout << "wrong" << endl;
	}
	
	
	return 0;
}
 
bool Pythagoras(int x, int y, int z)
{
	int max, a, b;
	if(x>y)
	{
		if(x>z)
		{
			max = x;
			a=y;
			b=z;
		}
		else
		{
			max = z;			
			a=x;
			b=y;
		}
	}
	else
	{
		if(y>z)
		{
			max = y;
			a=x;
			b=z;
		}
		else
		{
			max = z;
			a=x;
			b=y;
		}
	}
	if(pow(max)==pow(a)+pow(b))
		return true;
	else
		return false;
	
}