e-olymp 8527. Неравенство ax ≤ b

Задача:

Для заданных целых чисел $a$ и $b$ найти наибольшее и наименьшее целое решение неравенства [latex]ax\leq b [/latex].

Входные данные:

Два целых числа $a$ и $b$, по модулю не превосходящих $1000$.

Выходные данные:

Если неравенство [latex]a x\leq b [/latex] не имеет решений, то вывести no solution.

Если любое действительное число является решением неравенства [latex]ax\leq b [/latex], то вывести all.

Иначе в одной строке вывести наименьшее и наибольшее целое решение неравенства [latex]ax\leq b [/latex]. Если наименьшего целого решения не существует, вывести -INF. Если наибольшего целого решения не существует, вывести INF.

Тесты:

Входные данные Выходные данные
0 4 all
0 0 all
0 -1 no solution
289 133 -INF 0
-150 -298 2 INF
3  10 -INF 3
956 0 -INF 0
-3  10 -3  INF
-3  0 0 INF
1000 1000 -INF 1
-1000 -1000 1 INF
-1000 1000 -1 INF

Решение: 

Объяснение:

Задача сводится к решению неравенства $ x\leq\frac{a}{b} $ или $ x\geq\frac{a}{b},$ в зависимости от значений параметров $a$ и $b.$ Поэтому необходимо рассмотреть все возможные варианты значений $a$ и $b$ от которых будет зависеть значение неравенства.  Если $a>0$, то выражение  будет равносильно $ x\leq\frac{a}{b} $, так как знак неравенства при делении на положительное число не меняется. Поскольку, нам нужно, чтобы $x$ был меньше данного выражения (либо равен), значение которого может быть и дробным (поэтому тип данных $a$ и $b$ дробный, хоть по условию, нам и нужен целый ответ), округляем в меньшую сторону. В обратном случае  ($a<0$ и, следовательно, исходное выражение эквивалентно $ x\geq\frac{a}{b}$) нам нужно наоборот, большее значение, поэтому и округление производится в большую сторону. Затем остается рассмотреть только частный случай $a=0$ , что и делается в начале кода.

e-olymp

ideone

One thought on “e-olymp 8527. Неравенство ax ≤ b

Добавить комментарий