연산자 파티 2
시간 제한0.2초메모리 제한512 MB
X를 0에서 시작해 i가 1부터 N까지 증가할 때 주어진 우선순위대로 빼기, 곱하기, 비트 AND, XOR, OR, 왼쪽 시프트 연산을 X에 적용한 최종 값을 구한다.
문제
초기값이 인 정수형 변수 가 있다.
가 부터 까지 씩 증가함에 따라 아래 조건에 맞게 연산을 진행한다. 연산을 모두 수행한 후의 값을 출력하시오.
- 가 의 배수라면 = - 를 한다. (-는 빼기 연산자이다.)
- 연산한 결과가 음수라면 = 를 한다.
- 가 의 배수라면 = × 를 한다. (×는 곱하기 연산자이다.)
- 연산한 결과가 보다 크거나 같으면 = % 를 한다.
- 가 의 배수라면 = & 를 한다. (&는 Bitwise AND 연산자이다.)
- 가 의 배수라면 = ⊕ 를 한다. (⊕는 Bitwise XOR 연산자이다.)
- 가 의 배수라면 = | 를 한다. (|는 Bitwise OR 연산자이다.)
- 가 의 배수라면 = << 를 한다. (<<는 Bitwise Left Shift 연산자이다.)
- 연산한 결과가 보다 크거나 같으면 = % 를 한다.
- 한 번에 여러 연산을 시행해야 한다면 -, ×, &, ⊕, |, << 우선순위로 연산을 진행한다.
입력
첫 번째 줄에 이 주어진다.
출력
연산을 모두 수행한 후의 값을 출력한다.
제한
- 은 양의 정수이다.
힌트
Bitwise 연산자들은 비트 단위로 연산을 시행한다.
-
Bitwise AND
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
- 두 비트가 모두 이면 결과가 이고, 그렇지 않으면 이다.
- 예시
- \begin{aligned} 0110\_{2} &= 6 \\\ \text{&} \ \ 1100\_{2} &= 12 \\\ \text{────} \\\ 0100\_{2} &= 4 \end{aligned}
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
-
Bitwise XOR
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
- 두 비트가 서로 다르면 결과가 이고, 그렇지 않으면 이다.
- 예시
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
-
Bitwise OR
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
- 두 비트 중 하나라도 이면 결과가 이고, 그렇지 않으면 이다.
- 예시
- 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
-
Bitwise Left Shift
- << 일 때, 의 비트를 번 왼쪽 이동한다.
- 왼쪽으로 이동된 수만큼 비게 되는 오른쪽 비트는 으로 채워진다.
- 예시
- << 일 때, 의 비트를 번 왼쪽 이동한다.