一,思路:
我们可以发现无论怎么交换,X和Y的和是不变的。然后我们可以用小学的一个结论,就是当两个数的和不变时----->"差小积大"。所以我们应该尽可能让两数差距尽可能小。(大的减小,小的增大)
二,代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
void Solved()
{
string x,y;
cin>>x>>y;
int flag=0;
for(int i=0;i<x.size();i++){
//我们统一将x变成大的那个数
//flag标记是否已经确定x>y
if(flag==0&&x[i]!=y[i])
{
if(x[i]<y[i]) swap(x[i],y[i]);
flag=1;
}
else if(flag==1&&x[i]!=y[i])
{
if(x[i]>y[i]) swap(x[i],y[i]);
}
}
cout<<x<<endl;
cout<<y<<endl;
}
int main()
{
int t;
cin >> t;
while (t--)
{
Solved();
}
return 0;
}