Условие
Принадлежит ли точка $(x,y)$ фигуре на рисунке?
В условии не оговаривается ни принадлежность граничных точек фигуре, ни формат записи координат точки. В своем решении я предполагаю, что граничные точки фигуре принадлежат, а значения координат могут иметь дробную часть.
Тесты
№ | Входные данные | Выходные данные |
1 | 0 0 | YES |
2 | -6 0 | YES |
3 | 5.0 -2.0 | YES |
4 | -3.33 -5 | NO |
5 | 0.12345 0.54321 | NO |
Код
1 2 3 4 5 6 7 |
class Test { static function main() { var x:Float = Std.parseFloat(Sys.stdin().readLine()); var y:Float = Std.parseFloat(Sys.stdin().readLine()); trace((x*x + y*y <= 36 && (x <= 0||y <= 0)) ? "Yes":"No"); } } |
Решение
В основе заданной фигуры лежит круг с радиусом $6$ и центром в начале системы координат $(0,0)$, из которого исключена первая четверть. Таким образом, нам нужно удостовериться, что положение заданной точки одновременно удовлетворяет следующим условиям:
- точка расположена в пределах круга, то есть сумма квадратов координат $x^{2}+y^{2}$ меньше или равна квадрату радиуса $6^{2}=36$;
- хотя бы одна из координат точки $(x,y)$ не превышает значения $0$ (другими словами, точка не лежит в первой четверти).
Если оба условия соблюдены, точка принадлежит фигуре. В противном же случае — нет. Такую проверку и последующий вывод ответа можно записать с помощью единственной тернарной операции:
1 |
trace((x*x + y*y <= 36 && (x <= 0||y <= 0)) ? "Yes":"No"); |
Ссылки
Try Haxe
Ссылка на условие задания: cpp.mazurok.com