이 문제에서는 직각삼각형의 한 변을 나타내는 정수가 주어집니다. 한 변이 있는 직각 삼각형이 가능한지 확인해야 합니다. 가능하면 직각 삼각형의 다른 두 변을 찾으십시오.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력
a = 5
출력
Sides : 5, 12, 13
설명
직각의 변은 5 2 로 나타납니다. + 12 2 =13 2
솔루션 접근 방식
문제에 대한 간단한 해결책은 피타고라스 정리를 사용하는 것입니다. 직각 삼각형의 변이 피타고라스 정리를 따른다는 것을 알고 있습니다.
a2 + b2 = c2
여기서 b와 b는 삼각형의 변이고 c는 삼각형의 빗변입니다.
이를 사용하여 b와 c의 값을 계산합니다.
사례 1
If a is even, c = (a2 + 4) + 1 b = (a2 + 4) - 1
사례 2
If a is odd, c = (a2 + 1)/ 2 c = (a2 - 1)/ 2
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
#define PI 3.1415926535
void printOtherSides(int n) {
int b,c;
if (n & 1) {
if (n == 1)
cout << -1 << endl;
else{
b = (n*n-1)/2;
c = (n*n+1)/2;
}
} else {
if (n == 2)
cout << -1 << endl;
else{
b = n*n/4-1;
c = n*n/4+1;
}
}
cout<<"Sides : a = "<<n<<", b = "<<b<<", c = "<<c<<endl;
}
int main() {
int a = 5;
printOtherSides(a);
return 0;
} 출력
Sides : a = 5, b = 12, c = 13