Hướng dẫn giải của IF11: Kiểm tra tam giác vuông


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho ba số a, b, c. Cần kiểm tra ba số đó có phải là ba cạnh của một tam giác vuông hay không.

Cách làm
  • Đọc ba số a, b, c và kiểm tra cả ba số đều dương.
  • Tìm cạnh lớn nhất lon trong ba cạnh.
  • Tổng bình phương của hai cạnh còn lại bằng aa + bb + cc - lonlon.
  • Theo định lý Pythagoras, tam giác vuông khi bình phương cạnh lớn bằng tổng bình phương hai cạnh kia. Nếu đúng thì in Yes, ngược lại in No. Bẫy: bình phương có thể lớn, nên dùng long long.
#include <bits/stdc++.h>
using namespace std;

int main() {
    long long a, b, c;
    cin >> a >> b >> c;
    // Tìm cạnh lớn nhất trong ba cạnh
    long long lon = a;
    if (b > lon) lon = b;
    if (c > lon) lon = c;
    // Tổng bình phương của hai cạnh còn lại
    long long tongkhac = a * a + b * b + c * c - lon * lon;
    // Tam giác vuông khi các cạnh dương và bình phương cạnh lớn bằng tổng bình phương hai cạnh kia
    if (a > 0 && b > 0 && c > 0 && lon * lon == tongkhac) {
        cout << "Yes\n";
    } else {
        cout << "No\n";
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.