#412. [CZOI2016 D] 小 X 与位运算

[CZOI2016 D] 小 X 与位运算

题目描述

自从上次小 X 搞定了完美数之后, 他最近在研究一项和计算机密切相关的黑科技。要知道在计算机的内部,数据都是以二进制的形式来进行存储的,而它使用的计算方法也和我们平时的加减乘除四则运算有所不同, 它使用的是位运算。那什么是位运算呢?

基础位运算有三种符号,分别是 andorxor

  • and 的运算法则:两个二进制数在做 and 运算时,分别对两个二进制数的每一位做 and 运算。而对每一位做 and 运算时, 遵守以下规则:只有当两个数的这一位都是 11 时,运算结果才为 11, 否则就是 00(高位不足用 00 补齐,最后结果忽略前导零)。通俗点讲 and 运算就是按位做乘法, 即将两个二进制数从高位到低位依次对齐,然后每一位上对齐的两个数相乘即得到这一位的结果。我们可以列一个简单的竖式来模拟这个 and 运算:
01101
and 10101
---------
    00101
  • or 运算遵守以下规则:只有当两个数的这一位都是 00 时,运算结果才为 00, 否则就是 11。例如 110111011010110101or 运算之后结果为 1110111101
01101
or  10101
---------
    11101
  • xor 运算遵守以下规则:只有当两个数的这一位相同时,运算结果才为 00,否则就是 11。例如 110111011010110101xor 运算之后结果为 1100011000
01101
xor  10101
----------
     11000

小 X 当然不会满足于最简单的位运算了。小 X 想知道两个很大很大的二进制数,在做完位运算之后,最后的结果是什么。而小 X 自己无法知道正确答案是什么, 他只好求助于你来帮助他解决这个问题。

输入格式

输入数据第一行是一个字符串 aa, 由字符 01 组成, 表示一个二进制数。

第二行也是一个字符串 bb,由字符 01 组成,同样表示一个二进制数。

第三行还是一个字符串 optopt,一定是 andorxor 三个中一种, 表示运算符号。

注意输入的二进制数没有前导零。

输出格式

输出一行一个字符串, 由字符 01 组成, 表示最后运算得到的二进制数。

注意输出的二进制数不能带有前导零, 即输出的第一个字符不能为 0

110100
11001
or
111101

数据范围

1max{a,b}1051 \le \max\{|a|,|b|\} \le 10^5