1370B - GCD Compression
题意:给一个大小为2N的数组A,请你从该数组从丢弃任意两个数,并将剩下(2N-2)个数两两相加,组成一个新的数组B,该数组B的所有元素的GCD>1
思路:
直接判断奇数奇偶性即可,丢弃两个数后使得奇数的个数为偶数,这样,奇数两两相加,偶数两两相加,GCD==2
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t,n,x;
cin>>t;
while(t--)
{
cin>>n;
queue<int>a,b;
int cnt=0;
for(int i=1; i<=n*2; ++i)
{
cin>>x;
if(x&1)
a.push(i);
else
b.push(i);
}
while(a.size()>=2&&cnt<n-1)
{
cout<<a.front()<<" ";
a.pop();
cout<<a.front()<<endl;
a.pop();
cnt++;
}
while(b.size()>=2&&cnt<n-1)
{
cout<<b.front()<<" ";
b.pop();
cout<<b.front()<<endl;
b.pop();
cnt++;
}
}
return 0;
}