Задача. Прямоугольный или нет?
Условие задачи:
Задано длины сторон треугольника. Определить, является ли этот треугольник прямоугольным.
Входные данные:
В единственной строке задано 3 натуральных числа — длины сторон треугольника. Длины сторон не превышают 1000.
Выходные данные:
Вывести «YES» (без кавычек), если треугольник прямоугольный, или «NO» (без кавычек) в противном случае.
Тесты
a | b | c | answer |
3 | 4 | 5 | «YES» |
1 | 2 | 3 | «NO» |
5 | 3 | 4 | «YES» |
Код:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <math.h> using namespace std; int main() { long int a,b,c; cin>>a>>b>>c; cout << (((a*a)+(b*b))==(c*c)||((a*a)+(c*c))==(b*b)|| ((c*c)+(b*b))==(a*a)?"YES":"NO")<< endl; return 0; } |
Объяснение Кода:
Нам надо проверить является ли прямоугольным треугольник из сторон: a, b, c.
Я проверял через теорему Пифагора «В прямоугольном треугольнике площадь квадрата, построенного на гипотенузе, равна сумме площадей квадратов, построенных на катетах. (wikipedia)». То есть стороны подставлял в формулу [latex]a^2+b^2=c^2[/latex], где [latex]a[/latex] и [latex] b[/latex] катеты а [latex]c[/latex] гипотенуза. Если стороны подходят в формулу то можно построить прямоугольник и выводим «YES» в противном случае выводим «NO». Проверял я через тернарный оператор _?_:_ c проверкой трёх вариантов гипотенузы.
Ссылка на задачу в e-olimp.
Ссылка на код в ideone.
Ссылка на пройденные тесты в e-olimp.