実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 66
問題概要
平面上の同一直線上にない3点 が与えられる。三角形 が直角三角形であるかを判定せよ。
制約
- 入力はすべて整数。
考察
直角三角形であることの必要十分条件は三平方の定理が成り立つことである。
したがって、 がそれぞれ直角となる場合について、三平方の定理が成り立つかどうかを確認し、どれか1つでも成り立てばその三角形は直角三角形ということになる。
コード
#include <bits/stdc++.h> using namespace std; // ======================================== // int main() { int x_a, y_a, x_b, y_b, x_c, y_c; cin >> x_a >> y_a >> x_b >> y_b >> x_c >> y_c; double ab = (x_a - x_b) * (x_a - x_b) + (y_a - y_b) * (y_a - y_b); double bc = (x_b - x_c) * (x_b - x_c) + (y_b - y_c) * (y_b - y_c); double ca = (x_c - x_a) * (x_c - x_a) + (y_c - y_a) * (y_c - y_a); if (ab + bc == ca || bc + ca == ab || ca + ab == bc) cout << "Yes" << endl; else cout << "No" << endl; }
実装時間: 5分以内