思路是找到一个数,然后对剩下的数求 gcd,通过这个可以唯一确定这个数,然后保留所有 gcd = 这个数的下标。这样递归下去,当选的这个数不是 1 时,每一次至少除以 2,所以查询最多 2n 次。但是需要在第一次选数的时候判掉 1。随机选两个下标,一直查 gcd 直到 gcd!=1,此时这两个下标都不会是 1 了。这样查询下去就行了。
这个做法正确性肯定是没问题的,但是我挂了。所以求调。
代码