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

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

소수와 쿼리

시간 제한90초메모리 제한1024 MB

요약
소수 P와 배열 A가 주어지고 원소 갱신이 있을 때, V(A_i^S - (A_i mod P)^S)의 구간 합을 구한다. 여기서 V는 P의 지수를 센다.
난이도

어려움10점 중 8점

유형
정수론, 세그먼트 트리, 수학, 누적 합
정답자
아직 제출이 없습니다

문제

소수 PP가 주어진다.

V(x)V(x)를 xx의 소인수분해에서 PP의 지수로 정의하자. 더 정확히는, V(x)=yV(x)=y이면 xx는 PyP^y로 나누어지지만 Py+1P^{y+1}로는 나누어지지 않는다. 또한 V(0)=0V(0)=0으로 정의한다.

예를 들어 P=3P=3이고 x=45x=45일 때, 45=5⋅3245=5 \cdot 3^2이므로 V(45)=2V(45)=2이다.

또한 NN개의 원소를 가진 배열 AA가 주어진다. 이 배열에 대해 다음 두 종류의 쿼리 QQ개를 처리해야 한다.

  • 타입 11 쿼리: 1 pos val - pospos번째 원소에 valval을 대입한다. 즉 Apos:=valA_{pos} := val.
  • 타입 22 쿼리: 2 S L R - ∑i=LRV(AiS−(Ai mod P)S)\displaystyle\sum_{i=L}^{R}{V(A_i^S - (A_i \bmod P)^S)}를 출력한다.

입력

입력의 첫 줄에는 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 공백으로 구분된 세 개의 양의 정수 NN, QQ, PP가 주어진다. NN은 배열의 원소 수, QQ는 쿼리의 수, PP는 소수이다.

다음 줄에는 배열 AA의 원소를 나타내는 NN개의 양의 정수 A1A_1, A2A_2, ⋯\cdots, ANA_N이 주어진다.

이어지는 QQ개의 줄에는 각각 하나의 쿼리가 주어지며, 다음 중 하나의 형태이다.

  • 공백으로 구분된 33개의 양의 정수: 1 pos val
  • 또는 공백으로 구분된 44개의 양의 정수: 2 S L R

출력

각 테스트 케이스마다 Case #x: y를 한 줄에 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 각 타입 22 쿼리의 답을 나열한 목록이다.

제한

  • 1≤T≤1001 \le T \le 100
  • 2≤P≤1092 \le P \le 10^9
  • PP는 소수이다.
  • 1≤pos≤N1 \le pos \le N
  • 1≤L≤R≤N1 \le L \le R \le N

최대 10개의 테스트 케이스에 대해:

  • 1≤N≤5×1051 \le N \le 5 \times 10^5
  • 1≤Q≤1051 \le Q \le 10^5

나머지 테스트 케이스에 대해:

  • 1≤N≤1031 \le N \le 10^3
  • 1≤Q≤1031 \le Q \le 10^3

타입 22 쿼리는 항상 하나 이상 존재한다.

힌트

샘플 케이스 #1에서

첫 번째 쿼리는 S=3S=3, L=3L=3, R=4R=4인 타입 22 쿼리이다. 이 쿼리의 결과를 계산해 보자.

i=3i=3, V(623−(62 mod 2)3)=3V(62^3 - (62 \bmod 2)^3)=3

i=4i=4, V(673−(67 mod 2)3)=1V(67^3 - (67 \bmod 2)^3)=1

∑i=34V(Ai3−(Ai mod P)3)=3+1=4\displaystyle\sum_{i=3}^{4}{V(A_i^3 - (A_i \bmod P)^3)} = 3+1 = 4

두 번째 쿼리는 타입 11 쿼리로, A1A_1에 6969를 대입해야 하므로 배열 AA는 69 94 62 67 91이 된다.

예제1

  1. 예제 1

    입력
    2
    5 5 2
    16 94 62 67 91
    2 3 3 4
    1 1 69
    2 3 1 4
    2 1 1 1
    2 3 2 2
    5 5 5
    1 2 3 4 5
    2 1 1 5
    1 3 98
    2 3 2 4
    1 5 3
    2 2 1 5
    
    예상 출력
    Case #1: 4 9 2 3
    Case #2: 1 1 1