연산자 파티 2

아직 제출이 없습니다시간 제한0.2초메모리 제한512 MB

문제

초기값이 00인 정수형 변수 XX가 있다.

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

  • ii11의 배수라면 XX = XX - ii를 한다. (-는 빼기 연산자이다.)
    • 연산한 결과가 음수라면 XX = X|X|를 한다.
  • ii33의 배수라면 XX = XX × ii를 한다. (×는 곱하기 연산자이다.)
    • 연산한 결과가 PP보다 크거나 같으면 XX = XX % PP를 한다.
  • ii1515의 배수라면 XX = XX & ii를 한다. (&는 Bitwise AND 연산자이다.)
  • ii6363의 배수라면 XX = XXii를 한다. (⊕는 Bitwise XOR 연산자이다.)
  • ii255255의 배수라면 XX = XX | ii를 한다. (|는 Bitwise OR 연산자이다.)
  • ii10231023의 배수라면 XX = XX << ii를 한다. (<<는 Bitwise Left Shift 연산자이다.)
    • 연산한 결과가 PP보다 크거나 같으면 XX = XX % PP를 한다.
  • 한 번에 여러 연산을 시행해야 한다면 -, ×, &, ⊕, |, << 우선순위로 연산을 진행한다.

입력

첫 번째 줄에 NN이 주어진다.

출력

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

제한

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

힌트

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

  • Bitwise AND

    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트가 모두 11이면 결과가 11이고, 그렇지 않으면 00이다.
    • 예시
      • \begin{aligned} 0110\_{2} &= 6 \\\ \text{&} \ \ 1100\_{2} &= 12 \\\ \text{────} \\\ 0100\_{2} &= 4 \end{aligned}
  • Bitwise XOR

    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트가 서로 다르면 결과가 11이고, 그렇지 않으면 00이다.
    • 예시
      • 0110_2=6 ⊕  1100_2=12 ──── 1010_2=10\begin{aligned} 0110\_{2} &= 6 \\\ \text{⊕} \ \ 1100\_{2} &= 12 \\\ \text{────} \\\ 1010\_{2} &= 10 \end{aligned}
  • Bitwise OR

    • 두 수의 각 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트 중 하나라도 11이면 결과가 11이고, 그렇지 않으면 00이다.
    • 예시
      • 0110_2=6 |  1100_2=12 ──── 1110_2=14\begin{aligned} 0110\_{2} &= 6 \\\ \text{|} \ \ 1100\_{2} &= 12 \\\ \text{────} \\\ 1110\_{2} &= 14 \end{aligned}
  • Bitwise Left Shift

    • aa << bb일 때, aa의 비트를 bb번 왼쪽 이동한다.
      • 왼쪽으로 이동된 수만큼 비게 되는 오른쪽 비트는 00으로 채워진다.
    • 예시
      • 0110_2 << 2  011000_2\begin{aligned} & 0110\_{2} \ \text{<<} \ 2 \\\ & \downarrow \\\ & 011000\_{2} \end{aligned}