Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть сборника.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
488 Кб
Скачать

Нарезка фантиков Условие

Для производства конфетных фантиков изготовлена длинная узкая лента с напечатанными на ней картинками. Длина каждой картинки — L мм, расстояние между двумя соседними картинками — d мм, расстояние от начала ленты до первой картинки — a мм.

Нужно получить N фантиков длиной W мм каждый. Аппарат по производству фантиков работает так: сперва от начала ленты отрезается и выбрасывается кусок длиной x мм. Затем от начала ленты один за другим отрезаются фантики длиной W мм каждый.

Каким должно быть x, чтобы на каждом фантике была целиком расположена ровно одна картинка? Картинки, попадающие на фантик только частично, не считаются.

Формат входного файла

Входной файл содержит целые числа L d a N W.

Формат выходного файла

Выходной файл должен содержать целое число x.

Число x должно удовлетворять неравенству 0 ≤ x < L + d.

Если существует несколько решений, выведите любое из них.

Ограничения

1 ≤ N, L, W, d ≤ 1000

0 ≤ a < d

Гарантируется, что существует хотя бы одно решение.

Примеры тестов

Входной файл

Выходной файл

1

3 1 2 3 7

1

Разбор

Переберём все целые числа x, удовлетворяющие неравенству 0  x < L + d, и для каждого из них проверим, является ли данное число решением задачи.

Как проверить, является ли заданное число x решением задачи? Для этого нужно проверить, что на каждом фантике целиком расположена ровно одна картинка.

Введём величину pi — расстояние от начала i-го фантика до ближайшей картинки, целиком лежащей правее его начала. Величина pi характеризует изображение на i-м фантике, т. е. то, что на нём напечатано.

В каком случае на i-м фантике целиком расположена ровно одна картинка? Ближайшая картинка, целиком лежащая правее начала i-го фантика, будет целиком находиться на этом фантике, если и только если pi + LW. А следующая картинка не будет целиком располагаться на этом фантике в том и только том случае, если pi + 2L + d > W. Итак, на i-м фантике целиком расположена ровно одна картинка тогда и только тогда, когда

W – 2Ld < piWL.

Осталось вычислить pi. Можно доказать, что

pi = (ax – (i 1)W) mod (L + d).

Также можно использовать формулы:

p1 = (ax) mod (L + d),

pi + 1 = (piW) mod (L + d), i = 1, …, N – 1.

Отметим, что при вычислении остатка от деления отрицательного числа на другое число необходимо прибавить к делимому достаточно большое число, кратное делителю, потому что при нахождении остатка от деления отрицательного числа на другое число операция mod работает неправильно.

program cut;

var

L, d, a, N, W: integer;

x, i, p: integer;

flag: boolean;

function mod2(a, b: integer): integer;

begin

while (a < 0) do

a := a + b;

Result := a mod b;

end;

begin

assign(input, 'input.txt');

reset(input);

assign(output, 'output.txt');

rewrite(output);

read(L, d, a, N, W);

for x := 0 to L+d-1 do

begin

flag := true;

for i := 1 to n do

begin

p := mod2(a-x-(i-1)*W, L+d);

if (not ((p > W-2*L-d) and (p <= W-L))) then

flag := false;

end;

if (flag) then

begin

write(x);

break;

end;

end;

close(input);

close(output);

end.