0042. Решить неравенство 1
Имя входного
файла
|
input.txt
|
Имя выходного
файла
|
output.txt
|
Максимальное
время работы на одном тесте
|
2 секунды
|
Ограничение по
памяти
|
64 МБ
|
Найти количество целых решений, удовлетворяющих неравенству:
A < B*x + C < D.
Формат входных данных:
В единственной строке заданы четыре целых числа: A, B, C и D
(0 ≤ A, B, C, D ≤ 1018, B ≠ 0).
Формат выходных данных:
Выведите одно число – количество целых решений данного неравенства.
Пример
input.txt
|
output.txt
|
1 1 0 5
|
3
|
5 2 3 9
|
1
|
Возможные проблемы при решении задачи 1 1. Правильно выразить величину х из неравенства. 2. Вывод результата должен быть в формате, представленном в условии задачи. Выражая
х, получаем, что формат числа - вещественный вместо 3, которые будет
искать тестовая программа, наша программа напишет, например,
3.0000000000E+00. Чтобы вывод значения был в формате, необходимом для теста пишем: writeln(х:0:0)
РЕШЕНИЕ: A < B*x + C < D Получили два неравенства относительно х: A < B*x + C; B*x + C < D Выражаем х: x1> (A-C)/B x2< (D-C)/B
Лучше всего представить решение в графическом виде, тогда будет понятно, что решением является интервал значений от х2-х1, тк. неравенство строгое, а нужно найти количество целых решений, то из результата нужно будет вычесть 1.
ПРИМЕР ПРОГРАММЫ: на портале оценено в 35 баллов
var a,b,c,d: integer; x,x1,x2: real; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(a,b,c,d); x1:=(a-c)/b; x2:=(d-c)/b; x:=x2-x1-1; writeln(x:0:0); close(input); close(output); end.
на портале оценено в 45 баллов (изменен тип данных)
var a,b,c,d: longint; x,x1,x2: real; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(a,b,c,d); x1:=(a-c)/b; x2:=(d-c)/b; x:=x2-x1-1; writeln(x:0:0); close(input); close(output); end.
|