本题与「同商下标的公约压缩」描述的计算任务一致。按输入格式读入数据后,沿用原题解的算法即可。
⌊n/i⌋ 分组。对每个分组内的任意两元素,我们可以把它们同时变成它们的 gcd,该操作可无限次执行。G(因为两两替换为 gcd 可逐步把所有数“收缩”到整体 gcd)。这样该分组的元素和变为 组大小 × G,且这是最小值。gcd 并乘以分组大小后累加。⌊n/i⌋ 的取值个数是 O(√n)。可用分块:令 l=1,令 q=n//l,则区间 [l, r](其中 r=n//q)的下标满足同一 ⌊n/i⌋。遍历这些区间即可。对数组可反复选不同下标 i,j 满足 ⌊n/i⌋=⌊n/j⌋,将 ai,aj 同时改为 gcd(ai,aj)。求操作后(可不操作)元素和的最小值。
1≤T≤104,1≤n≤2×105,1≤ai≤109,所有 n 之和不超过 2×105。
第一行 T。每组一行 n,一行 n 个整数 ai。
每组一行一个整数,表示最小元素和。
输入
1
6
1 2 3 7 8 9
输出
9
说明
按题意模拟计算得到。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册