T2 划分(partition)
题目描述
小 C 有一个长度为 n 的序列 A,现在他想把序列 A 划分成至少 2 段。
小 C 定义 li,ri 表示划分出的第 i 个子段的左右端点,这个子段的子段和 bi=j=li∑riAj。
小 C 认为一个合法的划分需要满足 li≤ri,且对于 ∀1≤j<k,有 lj+1=rj+1,并且 l1=1,rk=n。(假设划分出了 k 段)
小 C 想要求一种划分方案使得 gcd(b1,b2,...,bk) 最大,你能告诉他该最大值吗?
输入格式
输入的第一行包含一个整数 n。
接下来一行包含 n 个整数,第 i 个整数表示 Ai。
输出格式
输出共一行,包含一个整数,表示 gcd(b1,b2,...,bk) 的最大值。
样例 1 输入
5
1 2 3 1 2
样例 1 输出
3
样例 2 输入
6
7 7 7 7 7 7
样例 2 输出
21
其余样例见下发文件。
数据规模与约定
- 对于 30% 的数据,保证 n≤20。
- 对于另 30% 的数据,保证 n≤100,1≤Ai≤3。
- 对于另 20% 的数据,保证 Ai=1 且 2∣n。
- 对于 100% 的数据,保证 1≤n≤105,1≤Ai≤109。