- •Содержание
- •В ожидании Нового года Условие
- •Золотые яйца Условие
- •Отгадай слово Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Инкубатор Бабы Яги Условие
- •Расписные салфеточки Условие
- •Сколько прошло дней? Условие
- •Арифметическая прогрессия Условие
- •Нарезка фантиков Условие
- •Шагающий циркуль Условие
- •Волшебные горшочки Бабы Яги Условие
- •Стиральный вопрос
- •Чудик в Цветландии Условие
- •Столовая Условие
- •Рейтинг студента Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Лена и зеркало
- •Макет города Условие
- •Мосты-горки Условие
Нарезка фантиков Условие
Для производства конфетных фантиков изготовлена длинная узкая лента с напечатанными на ней картинками. Длина каждой картинки — 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 < L + d
Гарантируется, что существует хотя бы одно решение.
Примеры тестов
-
№
Входной файл
Выходной файл
1
3 1 2 3 7
1
Разбор
Переберём все целые числа x, удовлетворяющие неравенству 0 x < L + d, и для каждого из них проверим, является ли данное число решением задачи.
Как проверить, является ли заданное число x решением задачи? Для этого нужно проверить, что на каждом фантике целиком расположена ровно одна картинка.
Введём величину pi — расстояние от начала i-го фантика до ближайшей картинки, целиком лежащей правее его начала. Величина pi характеризует изображение на i-м фантике, т. е. то, что на нём напечатано.
В каком случае на i-м фантике целиком расположена ровно одна картинка? Ближайшая картинка, целиком лежащая правее начала i-го фантика, будет целиком находиться на этом фантике, если и только если pi + L W. А следующая картинка не будет целиком располагаться на этом фантике в том и только том случае, если pi + 2L + d > W. Итак, на i-м фантике целиком расположена ровно одна картинка тогда и только тогда, когда
W – 2L – d < pi W – L.
Осталось вычислить pi. Можно доказать, что
pi = (a – x – (i – 1)W) mod (L + d).
Также можно использовать формулы:
p1 = (a – x) mod (L + d),
pi + 1 = (pi – W) 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.
