Задача
После окончания второго тура олимпиады по программированию участники олимпиады решили отметить это событие. Для этой цели был заказан один большой торт прямоугольной формы. При этом стол, вокруг которого собрались участники был круглым. Естественно, у них возник вопрос, поместиться ли прямоугольный торт на круглом столе так, чтобы ни одна часть торта не выходила за пределы стола. Вам необходимо дать ответ на этот вопрос, зная размеры торта и радиус стола.
Входные данные
Содержит три натуральных числа: радиус стола [latex]r \left(1\leqslant r\leqslant 1000 \right)[/latex], ширину [latex]w[/latex] и длину [latex]l[/latex] торта [latex] \left(1\leqslant w \leqslant l \leqslant 1000\right)[/latex].
Выходные данные
Вывести слово [latex]YES[/latex], если торт помещается на стол, и слово [latex]NO[/latex] в противном случае.
Тесты
№ | Входные данные | Выходные данные |
1 | 38 40 60 | YES |
2 | 35 20 70 | NO |
3 | 50 60 80 | YES |
4 | 30 60 90 | NO |
Код программы
с ветвлением:
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { int r, w, l; cin >> r >> w >> l; cout << (w * w + l * l <= 4 * r * r ? "YES" : "NO"); return 0; } |
без ветвления:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> using namespace std; bool myBool(int x, int y, int z) { return(x * x + y * y <= 4 * z * z); } int main() { int r, w, l; cin >> r >> w >> l; myBool(w, l, r) && cout << "YES"; !myBool(w, l, r) && cout << "NO"; return 0; } |
Решение задачи

Вписанный в окружность прямоугольник
Для того, чтобы узнать, помещается торт на столе или нет, необходимо найти диагональ прямоугольного торта. Зная длину и ширину прямоугольника, находим диагональ по теореме Пифагора. Если она равна или меньше диаметра стола $AB^2$ + $AD^2$ <= 4$OD^2$, значит торт помещается, и пишем "YES". Если диагональ больше диаметра стола, пишем "NO".
Ссылки
- Условие задачи на e-olymp
- Код программы с ветвлением на ideone
- Код программы без ветвления на ideone
Вероятно, в тернарной операции лишние 3 скобочки. Это, конечно, не критично, но может немного путать, учитывая, что без них работает так же:
Умножение выполняется раньше сложения. Действительно скобки не нужны. А уж брать всё в двойные скобки совсем бессмысленно. Может уберём, а?
Сделал!
С функцией очень правильно поступил. Молодец!
Но отступы нужно поправить.
И уберите русский текст из адреса, пожалуйста.
Сделал!