Олимпиадный тренинг

Задача . B. Получение нуля


Предположим, у вас есть целое число \(v\). За одну операцию вы можете:

  • либо присвоить \(v = (v + 1) \bmod 32768\)
  • либо присвоить \(v = (2 \cdot v) \bmod 32768\).

Вам заданы \(n\) целых чисел \(a_1, a_2, \dots, a_n\). Какое минимальное количество операций необходимо, чтобы сделать каждое \(a_i\) равным \(0\)?

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

В первой строке задано одно целое число \(n\) (\(1 \le n \le 32768\)) — количество чисел.

Во второй строке заданы \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(0 \le a_i < 32768\)).

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

Выведите \(n\) чисел: \(i\)-е число должно равняться минимальному количеству операций, чтобы сделать \(a_i\) равным \(0\).

Примечание

Рассмотрим каждый \(a_i\):

  • \(a_1 = 19\). Вы можете, сначала, увеличить его на единицу и получить \(20\), а потом умножить его на два \(13\) раз. Вы получите \(0\) за \(1 + 13 = 14\) шагов.
  • \(a_2 = 32764\). Вы можете увеличить число на единицу \(4\) раза: \(32764 \rightarrow 32765 \rightarrow 32766 \rightarrow 32767 \rightarrow 0\).
  • \(a_3 = 10240\). Вы можете умножить его на два \(4\) раза: \(10240 \rightarrow 20480 \rightarrow 8192 \rightarrow 16384 \rightarrow 0\).
  • \(a_4 = 49\). Вы можете умножить его на два \(15\) раз.

Примеры
Входные данныеВыходные данные
1 4
19 32764 10240 49
14 4 4 15

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя