AT_abc231_e [ABC231E] Minimal payments

题目描述

在 Atcoder 王国中,使用 $N$ 种面额的硬币,分别为 $A_1$ 元、$A_2$ 元、$\ldots$、$A_N$ 元。 其中 $1 = A_1 < \ldots < A_N$,并且对于所有 $1 \leq i \leq N-1$,$A_{i+1}$ 都是 $A_i$ 的倍数。 现在你需要用这些硬币支付 $X$ 元。你可以支付超过 $X$ 元,然后用硬币找零。请问,支付时所用硬币枚数与找零时所用硬币枚数之和的最小值是多少? 更准确地说,对于任意 $Y \geq X$,你需要用最少的硬币表示 $Y$ 元和 $Y-X$ 元,求这两者所用硬币数之和的最小值。

输入格式

输入通过标准输入给出,格式如下: > $N$ $X$ $A_1$ $\ldots$ $A_N$

输出格式

输出答案。

说明/提示

### 限制条件 - 输入中的所有值均为整数。 - $1 \leq N \leq 60$ - $1 = A_1 < \ldots < A_N \leq 10^{18}$ - 对于所有 $1 \leq i \leq N-1$,$A_{i+1}$ 是 $A_i$ 的倍数。 - $1 \leq X \leq 10^{18}$ ### 样例解释 1 用 $1$ 枚 $100$ 元硬币支付,然后用 $1$ 枚 $10$ 元硬币和 $3$ 枚 $1$ 元硬币找零,总共需要 $5$ 枚硬币。 ### 样例解释 2 直接用 $7$ 枚 $7$ 元硬币支付是最优的。 由 ChatGPT 4.1 翻译