- toc {:toc}
문제
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
입력
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
출력
각 입력에 대해 직각 삼각형이 맞다면 “right”, 아니라면 “wrong”을 출력한다.
출처:https://www.acmicpc.net/problem/4153
<풀이>
- 피타고라스의 공식 사용. 빗변의 제곱 = 밑변의 제곱+높이의 제곱
- 더 나은 풀이 생각해보기
#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;
}