题目描述
给定两个只包含 0,1
的二进制数字,请你求出两个数字异或以后的二进制值是多少?(两个数字异或是指其二进制形式下按位做异或运算)
所谓异或,是指不同值异或结果为1,相同值异或结果为0,即:
0⊕0=00⊕1=11⊕0=11⊕1=00⊕0=00⊕1=11⊕0=11⊕1=0
输入格式
输入共两行,每行一个二进制数字
输出格式
输出共一行,一个二进制数字表示答案
数据范围
对于50%50%的数据,输入的二进制数字长度不超过7位
对于100%100%的数据,输入的二进制数字长度不超过100位
注意:输入的两个二进制数字长度可能不相同
样例数据
输入:
1101
1110
输出:
11
说明:
按位异或的答案为0011,去掉前导0后即为11
输入:
100101
1010
输出:
101111
详见代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{string a, b;string s = "";cin >> a >> b;int lena = a.length();int lenb = b.length();if (lena < lenb) {swap(a, b);swap(lena, lenb);}for (int i = lena - 1, j = lenb - 1; i >= 0; i--, j--) {if (j < 0) {s = a[i] + s;} else {if (a[i] == '1' && b[j] == '0' || a[i] == '0' && b[j] == '1'){s = '1' + s;} else {s = '0' + s;}}}bool flag = 1;for (int i = 0; i < s.length(); i++) {if (s[i] == '0' && flag == 1) {continue;} else {cout << s[i];flag = 0;}}return 0;
}