题解 | #还是A+B#
还是A+B
https://www.nowcoder.com/practice/8c3c5dae2c4a4266ba04f993a18e286b
循环得到后k位的数值(可能a b没有k位那么长,只能得到a b间最小位数)
#include <iostream>
using namespace std;
//k的含义是:a b的末尾k位是否相同,而不是个位是否相同
int main(){
int a,b;
while(cin >>a >>b && (a!=0 && b!=0)){
int ta = a,tb = b;
int k;
cin >>k;
int aa=0,bb=0;
while(k && a &&b){
aa = aa*10+ta%10; //得到的是逆序的位数,逆序也不影响判断
bb = bb*10+tb%10;
if (aa!= bb)break;
ta/=10;
tb/=10;
k--;
}
if (aa==bb) cout <<"-1"<<endl;
else cout << a+b<<endl;
}
}



查看12道真题和解析