题解 | #还是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;
	}
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务