아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

연산자 파티 2

시간 제한0.2초메모리 제한512 MB

요약
X를 0에서 시작해 i가 1부터 N까지 증가할 때 주어진 우선순위대로 빼기, 곱하기, 비트 AND, XOR, OR, 왼쪽 시프트 연산을 X에 적용한 최종 값을 구한다.
난이도

보통10점 중 7점

유형
수학, 비트 연산, 정수론, 시뮬레이션
정답자
아직 제출이 없습니다

문제

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

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

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

입력

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

출력

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

제한

  • P=109+7P = 10^9 + 7
  • 1≤N≤10111 \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}

예제4

  1. 예제 1

    입력
    3
    
    예상 출력
    6
    
  2. 예제 2

    입력
    5
    
    예상 출력
    3
    
  3. 예제 3

    입력
    2023
    
    예상 출력
    352397790
    
  4. 예제 4

    입력
    1234567895
    
    예상 출력
    540550399