CF1661B Getting Zero

题目描述

假设你有一个整数 $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$ 次。总共需要 $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$ 次。 由 ChatGPT 4.1 翻译