만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구간 위의 대수

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

요약
소수 p에 대해 배열의 구간에 값을 곱하는 연산과, 구간 원소들이 생성하는 부분군의 크기를 구하는 질의를 처리합니다.
난이도

어려움10점 중 8점

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

문제

소수 pp가 주어진다.

아래의 모든 연산은 법 pp에 대한 곱셈군에서 수행한다.

크기가 nn인 배열이 주어진다. 다음 두 종류의 질의 qq개를 처리한다.

  • "1 ll rr xx": 구간 [l;r][l; r]의 모든 원소에 xx를 곱한다.
  • "2 ll rr": 구간 [l;r][l; r]의 원소들이 생성하는 부분군의 위수를 구한다.

정의는 아래 힌트를 참고한다.

입력

첫 줄에 세 정수 pp, nn, qq가 주어진다. 각각 소수, 배열의 크기, 질의의 개수이다. (2≤p<1092 \le p < 10^{9}, pp는 소수, 1≤n≤1051 \le n \le 10^{5}, 1≤q≤1051 \le q \le 10^{5})

둘째 줄에 크기 nn인 초기 배열 aa가 주어진다. (1≤ai<p1 \le a_i < p)

다음 qq개의 줄에 질의가 주어진다. 첫 번째 종류는 "1 ll rr xx" 형식이며 (1≤l≤r≤n1 \le l \le r \le n, 1≤x<p1 \le x < p), 구간 [l;r][l; r]의 모든 원소에 xx를 곱한다. 두 번째 종류는 "2 ll rr" 형식이며 (1≤l≤r≤n1 \le l \le r \le n), 구간 원소들이 생성하는 부분군의 위수를 구한다.

출력

2번 종류의 각 질의에 대해 답을 한 줄에 하나씩 출력한다.

참고

이 절은 문제에 나오는 군론 용어를 정의한다. 모든 정의는 관례적인 것이므로 기초를 아는 독자는 건너뛰어도 된다.

군은 결합법칙을 만족하는 이항 연산이 정의된 집합이다. 군은 연산에 대해 닫혀 있고, 항등원(곱셈에서의 1)이 있으며, 모든 원소에 역원이 있다.

법 pp에 대한 곱셈군은 원소가 1,2,…,p−11, 2, \ldots, p-1이고, 연산이 법 pp에 대한 곱셈인 군이다. 이것이 군임은 쉽게 확인할 수 있다.

부분군은 군 GG의 부분집합 HH로서, GG와 같은 연산에 대해 그 자체로 군이 되는 것이다. 특히 연산에 대해 닫혀 있어야 한다.

집합이 생성하는 부분군은 임의의 부분집합 S⊆GS \subseteq G에 대해, SS를 포함하는 GG의 가장 작은 부분군 ⟨S⟩\langle S \rangle이다. 이 부분군은 하나로 정해진다.

군의 위수는 군에 속한 원소의 개수이다.

예제1

  1. 예제 1

    입력
    17 3 7
    10 16 2
    2 2 3
    2 1 2
    2 2 2
    1 1 2 3
    2 1 1
    2 3 3
    2 1 3
    
    예상 출력
    8
    16
    2
    4
    8
    16