代码有点长,但是思路很清晰
#include<bits/stdc++.h>
#define ll long long
#define lint long int
#include<map>
#include<memory>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<math.h>
#define d double
using namespace std;
//bool check(string x)
//{
// for(int i=0;i<x.size();i++)
// {
// if(x[i]!=-1)
// {
// return 0;
// break;
// }
// if(x[i]==-1 and i==x.size()-1)
// {
// return false;
// }
// }
//}
int main()
{
string a,b;
int num1=0,num2=0,num3=0,num4=0;
cin>>a>>b;
int la,lb;
int l;int ml;
string m,n;
la=a.size();
lb=b.size();
ml=max(la,lb);
if(la>lb)
{
l=abs(la-lb);
for(int i=0;i<l;i++)
{
n[i]='0';
}
for(int i=l;i<=la;i++)
{
n[i]=b[i-1];
}
}
if(la<lb)
{
l=abs(la-lb);
for(int i=0;i<l;i++)
{
n[i]='0';
}
for(int i=l;i<=lb;i++)
{
n[i]=a[i-1];
}
}
if(la==lb)
{
for(int i=0;i<la;i++)
n[i]=b[i];
}
for(int i=0;i<=ml;i++)
cout<<a[i]<<' ';
cout<<endl;
for(int i=0;i<=ml;i++)
cout<<n[i]<<' ';
for(int i=0;i<ml;i++)
{
if(la>=lb)
{
if(a[i]>n[i])n[i]=-1;
if(n[i]>a[i])a[i]=-1;
}
if(lb>la)
{
if(b[i]>n[i])n[i]=-1;
if(n[i]>b[i])b[i]=-1;
}
}
if(la>=lb)
{
for(int i=0;i<ml;i++)
{
if(a[i]!=-1)
{
num1++;
cout<<a[i];
}
// if(check(a))
// {
// cout<<"YODA";
// }
}
if(num1==0)
{
cout<<"YODA";
}
cout<<endl;
for(int i=0;i<ml;i++)
{
if(n[i]!=-1)
{
num2++;
cout<<n[i];
}
// if(check(n))
// {
// cout<<"YODA";
// }
}
if(num2==0)
{
cout<<"YODA";
}
}
if(lb>la)
{
for(int i=0;i<ml;i++)
{
if(n[i]!=-1)
{
num3++;
cout<<n[i];
}
// if(check(n))
// {
// cout<<"YODA";
// }
}
if(num3==0)
{
cout<<"YODA";
}
cout<<endl;
for(int i=0;i<ml;i++)
{
if(b[i]!=-1)
{
num4++;
cout<<b[i];
}
// if(check(b))
// {
// cout<<"YODA";
// }
}
if(num4==0)
{
cout<<"YODA";
}
}
return 0;
}