Max GCD
题目描述
有一个长度为 N 的整数序列 A1, A2, ⋯, AN。
你可以进行如下操作 0 次或多次,最多不超过 K 次:
- 选择 1 到 N 之间的两个整数 i, j,且 i=j,将 Ai 加 1,将 Aj 减 1。操作后,序列中的某些元素可以变为负数。
请计算,经过操作后,作为能整除 A 的所有元素的正整数中的最大值是多少。这里,正整数 x 能整除整数 y,是指存在某个整数 z,使得 y=xz。
输入格式
输入以如下格式从标准输入读入:
N K A1 A2 ⋯ AN−1 AN
输出格式
输出经过操作后,能整除 A 的所有元素的正整数中的最大值。
样例 #1
样例输入
2 3
8 20
样例输出
7
样例 #2
样例输入
2 10
3 5
样例输出
8
样例 #3
样例输入
4 5
10 1 2 22
样例输出
7
样例 #4
样例输入
8 7
1 7 5 6 8 2 6 5
样例输出
5
说明/提示
限制条件
- 2≤N≤500
- 1≤Ai≤106
- 0≤K≤109
- 所有输入均为整数
样例解释 1
例如,可以通过如下操作使 7 能整除 A 的所有元素:
- 令 i=2,j=1,此时 A 变为 (7,21)。
此外,无法使 8 或更大的整数整除 A 的所有元素。
样例解释 2
例如,可以进行如下 5 次操作:
- 令 i=2,j=1,此时 A 变为 (2,6)。
- 令 i=2,j=1,此时 A 变为 (1,7)。
- 令 i=2,j=1,此时 A 变为 (0,8)。
- 令 i=2,j=1,此时 A 变为 (−1,9)。
- 令 i=1,j=2,此时 A 变为 (0,8)。
此时,0=8×0, 8=8×1,因此 8 能整除 A 的所有元素。此外,无法使 9 或更大的整数整除 A 的所有元素。
由 ChatGPT 4.1 翻译