시간 제한메모리 제한제출정답맞힌 사람정답 비율
0.2 초 512 MB208583021.429%

문제

초기값이 $0$인 정수형 변수 $X$가 있다.

$i$가 $1$부터 $N$까지 $1$씩 증가함에 따라 아래 조건에 맞게 연산을 진행한다. 연산을 모두 수행한 후의 $X$값을 출력하시오.

  • $i$가 $1$의 배수라면 $X$ = $X$ - $i$를 한다. (-는 빼기 연산자이다.)
    • 연산한 결과가 음수라면 $X$ = $|X|$를 한다.
  • $i$가 $3$의 배수라면 $X$ = $X$ × $i$를 한다. (×는 곱하기 연산자이다.)
    • 연산한 결과가 $P$보다 크거나 같으면 $X$ = $X$ % $P$를 한다.
  • $i$가 $15$의 배수라면 $X$ = $X$ & $i$를 한다. (&는 Bitwise AND 연산자이다.)
  • $i$가 $63$의 배수라면 $X$ = $X$ ⊕ $i$를 한다. (⊕는 Bitwise XOR 연산자이다.)
  • $i$가 $255$의 배수라면 $X$ = $X$ | $i$를 한다. (|는 Bitwise OR 연산자이다.)
  • $i$가 $1023$의 배수라면 $X$ = $X$ << $i$를 한다. (<<는 Bitwise Left Shift 연산자이다.)
    • 연산한 결과가 $P$보다 크거나 같으면 $X$ = $X$ % $P$를 한다.
  • 한 번에 여러 연산을 시행해야 한다면 -, ×, &, ⊕, |, << 우선순위로 연산을 진행한다.

입력

첫 번째 줄에 $N$이 주어진다.

출력

연산을 모두 수행한 후의 $X$값을 출력한다.

제한

  • $P = 10^9 + 7$
  • $1 \le N \le 10^{11}$
  • $N$은 양의 정수이다.

예제 입력 1

3

예제 출력 1

6

예제 입력 2

5

예제 출력 2

3

예제 입력 3

2023

예제 출력 3

352397790

예제 입력 4

1234567895

예제 출력 4

540550399

힌트

Bitwise 연산자들은 비트 단위로 연산을 시행한다.

  • Bitwise AND
    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트가 모두 $1$이면 결과가 $1$이고, 그렇지 않으면 $0$이다.
    • 예시
      • $\begin{aligned} 0110_{2} &= 6 \\ \text{&} \ \ 1100_{2} &= 12 \\ \text{────} \\ 0100_{2} &= 4 \end{aligned}$
  • Bitwise XOR
    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트가 서로 다르면 결과가 $1$이고, 그렇지 않으면 $0$이다.
    • 예시
      • $\begin{aligned} 0110_{2} &= 6 \\ \text{⊕} \ \ 1100_{2} &= 12 \\ \text{────} \\ 1010_{2} &= 10 \end{aligned}$
  • Bitwise OR
    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트 중 하나라도 $1$이면 결과가 $1$이고, 그렇지 않으면 $0$이다.
    • 예시
      • $\begin{aligned} 0110_{2} &= 6 \\ \text{|} \ \ 1100_{2} &= 12 \\ \text{────} \\ 1110_{2} &= 14 \end{aligned}$
  • Bitwise Left Shift
    • $a$ << $b$일 때, $a$의 비트를 $b$번 왼쪽 이동한다.
      • 왼쪽으로 이동된 수만큼 비게 되는 오른쪽 비트는 $0$으로 채워진다.
    • 예시
      • $\begin{aligned} & 0110_{2} \ \text{<<} \ 2 \\ & \downarrow \\ & 011000_{2} \end{aligned}$

출처