#P1557. 团结(unite)

团结(unite)

题目描述

小 C 有一个长度为 nn 的序列 AA

小 C 认为一个序列 AA 是团结的当且仅当 gcd(A1,A2,...,An)=1\gcd(A_1,A_2,...,A_n)=1

小 C 现在可以做以下操作任意次:

  • 选择一个位置 ii,将 AiA_i 变为 gcd(Ai,i)\gcd(A_i,i),花费的代价为 ni+1n-i+1

小 C 想求出使序列 AA 团结的最小代价和。

输入格式

输入的第一行包含一个整数 nn

接下来一行包含 nn 个整数,第 ii 个整数表示 AiA_i

输出格式

输出共一行,包含一个整数,表示最小代价和。

样例输入 #1

2
2 4

样例输出 #1

2

样例输入 #2

3
3 6 9

样例输出 #2

2

数据范围

样例 1 解释

花费代价 22 选择位置 11A1A_1 变为 11

  • 对于 30%30\% 的数据,保证 n20n\le 20
  • 对于 60%60\% 的数据,保证 n50n\le 50
  • 对于 100%100\% 的数据,1n1051\le n\le 10^51Ai1091\le A_i\le 10^9