题目链接:https://codeforces.com/contest/1370/problem/B
题意
给出 $2n$ 个数,选出 $2n - 2$ 个数,使得它们的 $gcd > 1$ 。
题解
大于 $1$ 最好构造的 $gcd$ 就是 $2$ 了,根据奇偶将 $2n$ 个数分类,然后两个奇数一对,两个偶数一对即可。
代码
#include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; n *= 2; vector<int> v[2]; for (int i = 1; i <= n; i++) { int x; cin >> x; v[x % 2].push_back(i); } if (v[1].size() & 1) { v[1].pop_back(); v[0].pop_back(); } else { if (v[0].size()) { v[0].pop_back(); v[0].pop_back(); } else { v[1].pop_back(); v[1].pop_back(); } } for (int i = 0; i < v[0].size(); i += 2) cout << v[0][i] << ' ' << v[0][i + 1] << "\n"; for (int i = 0; i < v[1].size(); i += 2) cout << v[1][i] << ' ' << v[1][i + 1] << "\n"; } int main() { int t; cin >> t; while (t--) solve(); }