На питоне Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Есть последовательность из n+ 1 комнат, между каждыми соседними комнатами есть автоматическая дверь. Дверь между комнатами i и i+1 открывается в моменты времени, которые делятся на
xi
. Переход в соседнюю комнату занимает одну секунду. Петя находится в первой комнате в момент
t0. В какое минимальное время он сможет оказаться в последней комнате?
Формат входных данных
В первой строке на вход подается 1 6 n 6 1000 и 1 6 t0 6 1000. Во второй строке подается
последовательность натуральных чисел x1, x2, ..., xn, где 1 6 xi 6 109 — числа, на которые должен
делиться момент времени, чтобы открылся переход между комнатами i и i + 1.
Напоминаем, что для считывания двух чисел из одной строки в языке Python можно использовать команду:
n, t0 = map(int, input().split()).
А в языке программирования С++ следует использовать тип данных long long.
Формат выходных данных
Выведите минимальное время в которое Петя может оказаться в последней комнате.
Примеры
стандартный ввод стандартный вывод
5 10
3 4 6 7 8
25
6 1
2 2 2 2 2 2
Из комбинаторики известно, что, в случае непозиционного кода, количество комбинаций (кодов) n-разрядного кода является числом сочетаний с повторениями, равно биномиальному коэффициенту:
{\displaystyle {n+k-1 \choose k}=(-1)^{k}{-n \choose k}={\frac {\left(n+k-1\right)!}{k!\left(n-1\right)!}}}{n+k-1 \choose k}=(-1)^{k}{-n \choose k}={\frac {\left(n+k-1\right)!}{k!\left(n-1\right)!}}, [возможных состояний (кодов)], где:
{\displaystyle n}n — количество элементов в данном множестве различных элементов (количество возможных состояний, цифр, кодов в разряде),
{\displaystyle k}k — количество элементов в наборе (количество разрядов).
В двоичной системе кодирования (n=2) количество возможных состояний (кодов) равно :
{\displaystyle {\frac {\left(n+k-1\right)!}{k!\left(n-1\right)!}}={\frac {\left(2+k-1\right)!}{k!\left(2-1\right)!}}={\frac {\left(k+1\right)!}{k!1!}}=k+1}\frac{\left(n+k-1\right)!}{k!\left(n-1\right)!}=\frac{\left(2+k-1\right)!}{k!\left(2-1\right)!}=\frac{\left(k+1\right)!}{k!1!}=k+1, [возможных состояний (кодов)], то есть
описывается линейной функцией:
{\displaystyle N_{kp}(k)=k+1}N_{{kp}}(k)=k+1, [возможных состояний (кодов)], где
{\displaystyle k}k — количество двоичных разрядов.
Например, в одном 8-битном байте (k=8) количество возможных состояний (кодов) равно:
{\displaystyle N_{kp}(k)=k+1=8+1=9}N_{{kp}}(k)=k+1=8+1=9, [возможных состояний (кодов)].
В случае позиционного кода, число комбинаций (кодов) k-разрядного двоичного кода равно числу размещений с повторениями:
{\displaystyle N_{p}(k)={\bar {A}}(2,k)={\bar {A}}_{2}^{k}=2^{k}}N_{{p}}(k)={\bar {A}}(2,k)={\bar {A}}_{2}^{k}=2^{k}, где
{\displaystyle \ k}\ k — число разрядов двоичного кода.
Объяснение:
При покадровой анимации содержимое рабочей области изменяется в каждом кадре. Покадровая анимация наиболее хорошо подходит для сложной анимации, при которой изображение меняется в каждом кадре, а не перемещается по рабочей области. При покадровой анимации размер файла увеличивается сильнее, чем при tween-анимации. В покадровой анимации Flash хранит значения для каждого завершенного кадра.
Для создания покадровой анимации определите все кадры как ключевые и создайте различные изображения для каждого кадра. Изначально каждый новый ключевой кадр имеет то же содержимое, что и предшествующий ему ключевой кадр, поэтому можно последовательно модифицировать кадры анимации.
Объяснение: