CF850B Arpa and a list of numbers

题目描述

Arpa 得到了一份包含 $ n $ 个数字的列表。他称一个列表为“坏的”,当且仅当它非空且列表中所有数字的最大公约数(gcd,更多信息见提示部分)为 $ 1 $。 Arpa 可以进行两种操作: - 选择一个数字并将其删除,花费为 $ x $。 - 选择一个数字,并将它加 $ 1 $,花费为 $ y $。 Arpa 可以对任意多个数字重复进行上述操作,并且允许对同一个数字任意多次使用第二种操作。 请帮助 Arpa 求出使该列表变为“好”的最小可能花费。

输入格式

第一行包含三个整数 $ n $、$ x $ 和 $ y $($ 1 \leq n \leq 5 \cdot 10^{5} $,$ 1 \leq x, y \leq 10^{9} $)——表示列表中的元素个数,以及整数 $ x $ 和 $ y $。 第二行包含 $ n $ 个整数 $ a_{1}, a_{2}, ..., a_{n} $($ 1 \leq a_{i} \leq 10^{6} $),为列表中的元素。

输出格式

输出一个整数:使该列表变为“好”的最小可能花费。

说明/提示

在样例中,数字 $ 1 $ 必须被删除(花费 $ 23 $),数字 $ 16 $ 需要加 $ 1 $(花费 $ 17 $)。 一个集合的最大公约数(gcd, greatest common divisor)是能整除该集合中每个数字的最大整数。可以在[这里](https://en.wikipedia.org/wiki/Greatest_common_divisor)了解更多关于最大公约数的信息。 由 ChatGPT 5 翻译