Array GCD

TimeLimit:3000MS  MemoryLimit:256MB
64-bit integer IO format:%I64d
未提交 | 登录后收藏
Problem Description

给你一个长度为n的序列, a1, a2,……an,你有两种操作

        1.  你可以移除一段长度为X的连续的子区间(X < n),并花费X * A的硬币。

        2. 你可以通过一次操作将数列的任意一个元素进行加一或减一,并花费B的硬币。

1操作只能操作一次,2操作可以进行多次,但不能对同一个元素操作多次,也就是每一个元素只能最多操作一次。

现在你想花费最少的硬币使操作之后的序列所有元素的Gcd大于1, 请你输出最小花费。

Input

第一行包括3个数 n,A,B, 表示含义如题面所述。

第二行包括n个数a(2  <= ai <= 109)。

n<=1,000,000

0<=A,B<1000,000,000

Output

输出仅一行,包含一个整数最小的花费。

SampleInput 1
3 1 4
4 2 3
SampleOutput 1
1
SampleInput 2
5 3 2
5 17 13 5 6
SampleOutput 2
8
SampleInput 3
8 3 4
3 7 5 4 3 12 9 4
SampleOutput 3
13
Note

第一组样例可以花费1的代价将3这个元素移除剩下的数Gcd为2

Submit
题目统计信息详细
总AC数1
通过人数1
尝试人数1
总提交量1
AC率100.00%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: