思路:不限次数,则把序列中所有元素都换成同一个元素即可。
可知,当两数之和为奇数时,后数被前数赋值;两数之和为偶数时,前数被后数赋值,故只需先令第一个数与最后一个数值相等,中间的数就可以根据奇偶通过选择第一个数或最后一个数来被赋予相同的值。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cout<<n-1<<endl;
if(n-1>0)
{
cout<<1<<" "<<n<<endl;
for(int i=2;i<n;i++)
{
if(a[i]%2==a[1]%2)
cout<<i<<" "<<n<<endl;
else
cout<<1<<" "<<i<<endl;
}
}
}
return 0;
}