题目描述
输入描述
输出描述
输入样例
6
17236 1106911
1 5
108 112
12345 1023412
1 11
1 20
输出样例
3465
4
-1
90007
10
-1
样例解释
很有意思的模拟题,十进制加法的进位作为单独一位出现在答案中。因此对于给定的 a 和 s ,每次取出 s 的最后一位或两位减去 a 的最后一位,若差大于 9 则输出 -1,或 s 比 a 先结束也是不成立的。
答案注意处理前导 0 即可。
参考代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
cin>>t;
while(t--){
ll a,s;
cin>>a>>s;
string ans="";
int flag=0;
while(s){
int i=a%10,j=s%10;
s/=10,a/=10;
if(i>j){
j=s%10*10+j;
s/=10;
}
if(i>j){
cout<<"-1"<<endl;
flag=1;
break;
}
if(j-i>9){
cout<<"-1"<<endl;
flag=1;
break;
}
//cout<<j-i<<endl;
ans+=(char)('0'+j-i);
//cout<<ans<<endl;
}
if(a!=0&&flag!=1){
cout<<"-1"<<endl;
flag=1;
}
if(!flag){
string reverse="";
int f=0;
for(int i=ans.size();i;i--)
reverse+=ans[i-1];
for(int i=0;i<reverse.size();i++){
if(f==0&&reverse[i]>'0'){
f=1;
cout<<reverse[i];
continue;
}
if(f==1)
cout<<reverse[i];
if(f==0&&reverse[i]=='0')
continue;
}
cout<<endl;
}
}
return 0;
}