Матч
247, Тип треугольника (TriangleType)
Дивизион 2, уровень
1
Заданы три стороны треугольника a, b,
c. Определить, является ли он
тупоугольным, прямоугольным или остроугольным.
Класс: TriangleType
Метод: String type(int
a, int b, int c)
Ограничения:
1 £ a, b, c £ 10000
Вход. Длины сторон треугольника a, b, c.
Выход. Если треугольника с заданными сторонами не существует, то
вывести “IMPOSSIBLE”. Иначе в зависимости от типа треугольника вывести одну из
фраз: “ACUTE”, “OBTUSE” или “RIGHT”.
Пример входа
a |
b |
c |
3 |
4 |
5 |
3 |
4 |
4 |
3 |
4 |
6 |
7 |
4 |
3 |
Пример выхода
“RIGHT”
“ACUTE”
“OBTUSE”
“IMPOSSIBLE”
РЕШЕНИЕ
геометрия
Сортируем
длины сторон в массиве m длины 3. Треугольник невозможно составить, если длина наибольшей стороны будет
больше или равной сумме длин двух других сторон. Тип треугольника определяется
из теоремы Пифагора (пусть a £ b £ c):
·
если c2 > a2 + b2, то треугольник тупоугольный;
·
если c2 = a2 + b2, то треугольник прямоугольный;
·
если c2 < a2 + b2, то треугольник остроугольный;
ПРОГРАММА
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
class TriangleType
{
public:
string ttype(int a, int b, int c)
{
string res;
int mas[3] = {a, b, c};
sort(mas,mas + 3);
if (mas[2] >= mas[1] + mas[0]) res = "IMPOSSIBLE"; else
if (mas[2] * mas[2] > mas[1] * mas[1] + mas[0] * mas[0]) res = "OBTUSE"; else
if (mas[2] * mas[2] == mas[1] * mas[1] +
mas[0] * mas[0]) res = "RIGHT"; else
res = "ACUTE";
return res;
}
};