Giới thiệu
Cho một số nguyên a là một cạnh của tam giác vuông. Tìm hai cạnh còn lại và ba góc của tam giác (nếu tồn tại).
Ví dụ minh họa
Đầu vào
a = 5
Đầu ra
Sides : 5, 12, 13 Angles : 67.38, 22.62, 90
Giải thích
Các cạnh: 5² + 12² = 13². Các góc tính bằng arcsin: sin⁻¹(5/13) ≈ 22.62°, góc còn lại = 90° - 22.62° = 67.38°.
Phương pháp giải
Tương tự bài trước, tìm b, c từ a bằng định lý Pythagoras. Sau đó tính các góc bằng định lý cosin:
cos(A) = (b² + c² - a²) / (2bc) cos(B) = (a² + c² - b²) / (2ac) cos(C) = (a² + b² - c²) / (2ab) = 0 (vì C = 90°)
Chương trình minh họa
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
#define PI 3.1415926535
void printAngles(int a, int b, int c) {
double x = (double)a;
double y = (double)b;
double z = (double)c;
double A = acos((y*y + z*z - x*x) / (2*y*z)) * 180 / PI;
double B = acos((x*x + z*z - y*y) / (2*x*z)) * 180 / PI;
cout << "Angles: A = " << A << ", B = " << B << ", C = 90";
}
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;
printAngles(n, b, c);
}
int main() {
int a = 5;
printOtherSides(a);
return 0;
}
Đầu ra
Sides : a = 5, b = 12, c = 13 Angles: A = 22.6199, B = 67.3801, C = 90