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

Related Images:

e-olymp 4716. Делёж яблок — 1

Задача: 
[latex]n[/latex] школьников делят [latex]k[/latex] яблок поровну, неделящийся остаток остаётся в корзинке. Сколько яблок достанется каждому школьнику?

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

Два положительных целых числа [latex]n[/latex] и [latex]k[/latex], не превышающие [latex]1500[/latex] — редко в школе бывает больше учеников, да и много яблок тоже кушать вредно…

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

Вывести количество яблок, которое достанется каждому школьнику.

Тесты:

Входные данные Выходные данные
3;14 4
10;100 10
20;20 1
1500;1500 1
120;1500 12


Решение:

Объяснение:

Поскольку все числа, используемые в задаче,— целые, и каждое из них меньше [latex]1500 [/latex] то переменные создаём типа «int». Далее разделив число яблок ([latex]k [/latex]) на количество школьников ([latex]n [/latex]), получаем количество яблок, которое получит каждый школьник. Формула, соответственно, [latex]\frac{k}{n} [/latex]. Остаток от деления в решении не учитывается, что соответствует условию, ведь он остаётся в корзине.

e-olymp

ideone

Related Images: