CF1305F
给定 \(n\) 个数的序列,一次操作可以使某个数 \(\pm 1\)。问最少多少次使得序列 \(gcd>1\)。
容易发现 \(n\) 次操作必定能使所有数都变成偶数,所以最优操作次数 \(\le n\)。
所以操作次数 \(\le 1\) 的数 \(\ge n/2\) 个。随机取 \(30\) 个位置,假设取到数 \(x\)。将 \(x,x-1,x+1\) 分解质因数,尝试把每个质因数作为整个序列的 \(gcd\),计算所需操作次数并尝试更新答案。
取到至少一个操作次数 \(\le 1\) 的概率是 \(1-\dfrac{1}{2^{30}}\),这就是算法的正确率。

浙公网安备 33010602011771号