题目说了,每组数不同,并且 $x\bmod y$ 也不出现在数组 $a$ 中,那么我们可以对数组进行排序,因为 $a\bmod b$ 得出的结果是一定比 $b$ 小的。那么拿数组的其他数分别去取模最小的数,那么得出的结果一定比数组最小的数还小,则一定不可能出现在数组 $a$ 之内。
简单解释一下这个数据:
6
2 7 5 3 4 8
按我的思路,则会排序成以下数组:
$[2,3,4,5,7,8]$。
$3\bmod2$ 不在数组 $a$ 中,
$4\bmod2$ 不在数组 $a$ 中,
$5\bmod2$ 不在数组 $a$ 中,
$7\bmod2$ 不在数组 $a$ 中,
$8\bmod2$ 不在数组 $a$ 中。
贴代码:
void solve()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
for(int i=0;i<n/2;i++)//n/2组数据即可
{
cout<<a[n-i-1]<<" "<<a[0]<<endl;//分别输出x与y,注意顺序,必须x在前y在后
}
}
多组数据,代码未全,当心踩坑。