水题,嗯模拟就完事,主要把握规律:有进位的地方的前一位一定要是1即可。
#include<iostream>
using namespace std;
string a,s;
int t;
int main()
{
cin>>t;
while(t--)
{
string b;
cin>>a>>s;
int aq1=a.length()-1;
int aq2=s.length()-1;
int flag=1;
int aq11=0;
string aqq;
int c=aq2-aq1;
for(int i=1;i<=c;i++) aqq+='0';
aqq+=a;
a=aqq;
aq11=a.length()-1;
for(int i=aq11;i>=aq11-aq1;i--)
{
if(aq2<0)
{
flag=0;
break;
}
if(s[aq2]-'0'==(a[i]-'0'))
{
aq2--;
b+='0';
//cout<<b<<endl;
}
else if(s[aq2]-'0'>a[i]-'0')
{
int count=(s[aq2]-'0')-(a[i]-'0');
b+=('0'+count);
aq2--;
}
else if(s[aq2]-'0'<a[i]-'0')
{
int count=10+(s[aq2]-'0')-(a[i]-'0');
if(s[aq2-1]!='1')
{
flag=0;
break;
}
b+=('0'+count);
aq2--;
aq2--;
}
}
if(aq2>=0)
{
for(int i=aq2;i>=0;i--)
{
b+=s[i];
}
}
if(!flag) cout<<-1<<endl;
else
{
int aq2=0;
for(int i=b.length()-1;i>=0;i--)
{
if(b[i]!='0'||aq2)
{
aq2=1;
cout<<(b[i]-'0');
}
}
cout<<endl;
}
}
return 0;
}