비트 연산
시간 제한1초메모리 제한512 MB
N개의 (x, y) 쌍이 주어질 때, x, 상수, ~, &, |, ^, +, -, *만으로 이루어진 C 식을 만들어 각 x_i가 y_i로 바뀌게 합니다.
문제
개의 정수 쌍 가 주어진다. 모든 에 대해 를 만족하는 함수 를 작성하라. 는 C 언어로 다음 형태로 쓸 수 있어야 한다.
uint32_t f(uint32_t x) {
return Expression;
}
Expression은 다음 BNF를 만족해야 한다.
<expr> ::= "x"
| <num>
| "(~" <expr> ")"
| "(" <expr> <op2> <expr> ")"
<op2> ::= "&" | "|" | "^" | "+" | "-" | "*"
여기서 은 10진수로 표기한 32비트 부호 없는 정수이다. 0이 아닌 수는 앞에 0을 붙이지 않으며, 0은 으로 표기한다.
입력
첫째 줄에 정수 ()이 주어진다. 다음 개의 줄에는 정수 와 ()가 한 줄에 하나씩 주어진다.
출력
조건을 만족하는 식을 출력한다. 출력은 위의 BNF 형식을 정확히 따라야 한다. 공백, 줄바꿈, 괄호 등 추가 문자는 허용되지 않는다. 출력은 자 이하여야 한다. 주어진 입력에 대해 답이 존재함이 보장된다.