수수께끼의 장치

시간 제한3초메모리 제한256 MB

요약
배열에서 구간을 2010으로 제곱하는 연산과 구간 합 질의를 처리하는데, 반복 제곱 시 값이 빠르게 순환하는 성질을 활용해야 합니다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 수학, 구현
정답자
아직 제출이 없습니다

문제

어떤 신기한 장치가 정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n 을 저장하고 반복해서 변형한다. 이 장치는 두 종류의 연산을 지원한다.

  1. 제곱 — 구간 [l,r][l, r] 이 주어지면, l≤i≤rl \le i \le r 인 모든 ii 에 대해 ai←ai2 mod 2010a_i \leftarrow a_i^2 \bmod 2010 으로 바꾼다.
  2. 합 — 구간 [l,r][l, r] 이 주어지면, ∑i=lrai\sum_{i=l}^{r} a_i 를 출력한다. 이 합은 2010으로 나눈 나머지를 취하지 않는다.

장치의 동작을 그대로 흉내 내어, 각 제곱 연산을 수행하고 각 합 질의에 답하라.

입력

첫째 줄에 수열의 길이 nn 이 주어진다 (1≤n≤50 0001 \le n \le 50\,000).

둘째 줄에 초기 수열을 이루는 nn 개의 정수 a1,…,ana_1, \ldots, a_n 이 주어진다 (0≤ai≤20090 \le a_i \le 2009).

셋째 줄에 연산의 개수 mm 이 주어진다 (1≤m≤50 0001 \le m \le 50\,000).

이어지는 mm 개의 줄에는 각각 하나의 연산이 세 정수 kk, ll, rr 로 주어진다. k=1k = 1 이면 구간을 제곱하고, k=2k = 2 이면 구간의 합을 질의하며, 1≤l≤r≤n1 \le l \le r \le n 이다.

출력

두 번째 종류의 연산마다, 입력에 나타난 순서대로 그 결과를 한 줄에 하나씩 출력한다.

예제6

  1. 예제 1

    입력
    3
    17 239 999
    4
    2 1 3
    1 2 3
    2 2 3
    2 1 2
    
    예상 출력
    1255
    1882
    858
    
  2. 예제 2

    입력
    1
    3
    8
    2 1 1
    1 1 1
    2 1 1
    1 1 1
    2 1 1
    1 1 1
    2 1 1
    1 1 1
    
    예상 출력
    3
    9
    81
    531
    
  3. 예제 3

    입력
    4
    0 0 0 0
    3
    1 1 4
    2 1 4
    1 2 3
    
    예상 출력
    0
    
  4. 예제 4

    입력
    5
    1 1 1 1 1
    4
    2 1 5
    1 1 5
    2 1 5
    2 2 4
    
    예상 출력
    5
    5
    3
    
  5. 예제 5

    입력
    3
    2009 2008 2007
    5
    2 1 3
    1 1 3
    2 1 3
    1 1 3
    2 1 3
    
    예상 출력
    6024
    14
    98
    
  6. 예제 6

    입력
    4
    29 30 37 38
    5
    2 1 4
    1 1 4
    2 1 4
    1 1 4
    2 1 4
    
    예상 출력
    134
    4554
    5358