AT_arc166_b [ARC166B] Make Multiples

题目描述

给定一个整数序列 $A=(A_1,\ldots,A_N)$,以及正整数 $a, b, c$。 你可以对该数列进行如下操作(可以进行任意次,包括 $0$ 次): - 选择一个整数 $i$,其中 $1\leq i\leq N$,将 $A_i$ 替换为 $A_i+1$。 你的目标是使数列 $A$ 中至少各有一个元素是 $a$ 的倍数、$b$ 的倍数、$c$ 的倍数。请你求出达成目标所需的最小操作次数。

输入格式

输入以如下格式从标准输入读入: > $N$ $a$ $b$ $c$ > > $A_1$ $\cdots$ $A_N$

输出格式

输出达成目标所需的最小操作次数。

说明/提示

## 限制条件 - $1\leq N\leq 2\times 10^5$ - $1\leq a, b, c \leq 10^6$ - $1\leq A_i\leq 10^{18}$ ## 样例解释 1 通过进行 $2$ 次操作,将 $A=(8,9,11)$ 变为 $A=(8,10,12)$,即可达成目标。 ## 样例解释 2 通过进行 $1$ 次操作,将 $A=(14,11,59)$ 变为 $A=(14,11,60)$,即可达成目标。 ## 样例解释 3 通过进行 $3$ 次操作,将 $A=(8,17,5,28,39,13)$ 变为 $A=(8,17,5,30,40,13)$,即可达成目标。 ## 样例解释 4 通过进行 $876537210887543205$ 次操作,将 $A=(123456789123456789)$ 变为 $A=(999994000010999994)$,即可达成目标。 由 ChatGPT 4.1 翻译