def parse_command(l):
op, val = l.split()
return op, int(val)
def get_bit_command(commands, bit):
no_ops = {
('&', 1),
('|', 0),
('^', 0)
}
num_xors = 0
for op, val in reversed(commands):
bit_val = (val >> bit) & 1
if (op, bit_val) in no_ops:
continue
elif op == '&':
return 'set', 0 ^ num_xors
elif op == '|':
return 'set', 1 ^ num_xors
else:
num_xors ^= 1
else:
return 'xor', num_xors
def main():
n = int(input())
commands = [parse_command(input()) for _ in range(n)]
and_command = 0b11111_11111
or_command = 0b00000_00000
xor_command = 0b00000_00000
for bit in range(10):
bit_op, bit_val = get_bit_command(commands, bit)
if bit_op == 'set':
if bit_val == 0:
and_command &= ~(1 << bit)
else:
or_command |= 1 << bit
else:
xor_command ^= bit_val << bit
print(3)
print('&', and_command)
print('|', or_command)
print('^', xor_command)
if __name__ == '__main__':
main()
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int n;
while (~scanf("%d", &n))
{
int a = 0, b = 1023;
char p[3];
int x;
for (int i = 0; i < n; i++)
{
scanf("%s %d", p, &x);
if (p[0] == '&')
{
a = a & x;
b = b & x;
}
else if (p[0] == '|')
{
a = a | x;
b = b | x;
}
else
{
a = a ^ x;
b = b ^ x;
}
}
int y1 = a & b;
int y2 = a | b;
int ans = 0;
for (int i = 0; i < 10; i++)
{
if ((a >> i & 1) && !(b >> i & 1))
ans |= 1 << i;
}
printf("3\n");
printf("| %d\n", y1);
printf("& %d\n", y2);
printf("^ %d\n", ans);
}
}
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |
17. Letter Combinations of a Phone Number | 5. Longest Palindromic Substring |
3. Longest Substring Without Repeating Characters | 1312. Minimum Insertion Steps to Make a String Palindrome |
1092. Shortest Common Supersequence | 1044. Longest Duplicate Substring |
1032. Stream of Characters | 987. Vertical Order Traversal of a Binary Tree |
952. Largest Component Size by Common Factor | 212. Word Search II |
174. Dungeon Game | 127. Word Ladder |
123. Best Time to Buy and Sell Stock III | 85. Maximal Rectangle |