2450: 小X与位运算(bignum)

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:57 Solved:0

Description

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

    有所不同,它使用的是位运算。那什么是位运算呢?基础位运算有三种符号,分别是andorxor(分别对应pascal 中的andorxor 三种运算符号)。

    以and 为例,两个二进制数在做and 运算时,分别对两个二进制数的每一位做and 运算。而对每一位做and 运算时,遵守以下规则:只有当两个数的这一位都是1 时,运算结果才为1,否则就是0。例如1101 10101 and 运算之后结果为101(高位不足用0 补齐,最后结果忽略前导0)。

    通俗点讲 and 运算就是按位做乘法,即将两个二进制数从高位到低位依次对齐,然后每一位上对齐的两个数相乘即得到这一位的结果 。我们可以列一个简单的竖式来模拟这个and运算:

       01101 

and 10101

----------

      00101

    结果00101最左边的两个0即为前导0,前导0一般要忽略。

    而orxor 的运算方法类似,唯一不同的是在对每一位做运算时遵循的方法不同。

    or 运算遵守以下规则:只有当两个数的这一位都是0时,运算结果才为0,否则就是1。例如1101和10101做or运算之后结果为11101

     01101 

or 10101

----------

    11101

    xor 运算遵守以下规则:只有当两个数的这一位相同时,运算结果才为0,否则就是1。例如1101和10101做 xor 运算之后结果为11000

      01101 

xor 10101

----------

     11000

    我们可以用一张简单的表格来说明三种位运算的运算规则,第一个数的第i位第二个数的第i位运算结果

第一个数的第i位

第二个数的第i位

运算结果

 

 

and

or

xor

0

0

0

0

0

0

1

0

1

1

1

0

0

1

1

1

1

1

1

0


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


Input

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

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

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

注意输入的二进制数没有前导零,字符个数可能会超过255个。 



Output

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

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

Sample Input Copy

110100
11001
or

Sample Output Copy

111101

HINT

数据范围
用n来表示输入的最长的二进制数的长度
对于30% 的数据,1 ≤ n ≤ 20
对于70% 的数据,1 ≤ n ≤ 1000
对于100% 的数据,1 ≤ n ≤ 100000

Source/Category