#P1577. 能量传输 (divide)

能量传输 (divide)

题目描述

在一座高科技城市中,Luke 负责管理城市中的能量传输系统。城市中有一排能量节点,每个节点上储存了少量的能量,表示为 0 或 1 单位。

由于城市计划升级,所有节点中的能量都需要调整,使得每个节点的能量都能整除一个特定的数 kk(其中 k>1k > 1)。Luke 可以通过操作将能量从一个节点传输到相邻的节点,但每次只能移动 1 单位的能量。

现在,Luke 的目标是以最少的操作次数完成这个任务,确保所有节点的能量都满足被 kk 整除的要求。你能帮助他计算出所需的最小操作次数吗?

输入格式

一个整数 nn 表示能量节点的数量。

接下来一行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n ,表示每个节点中初始的能量数量。

输出格式

输出一个整数,表示完成目标所需的最小操作次数。

样例输入 #1

5
1 0 1 0 1

样例输出 #1

4

样例输入 #2

10
1 0 1 0 1 0 0 1 0 1

样例输出 #2

14

数据范围

样例解释 1

最优解为将 a1a_1 的能量移到 a2a_2 再移到 a3a_3

a5a_5 的能量移到 a4a_4 再移到 a3a_3

得到 0,0,4,0,00,0,4,0,0,均为 44 的倍数。

对于 60%60\% 的数据,1n101 \le n \le 10

对于 100%100\% 的数据,1n1051 \le n \le 10^50ai10 \le a_i \le 1