소수와 쿼리
시간 제한90초메모리 제한1024 MB
소수 P와 배열 A가 주어지고 원소 갱신이 있을 때, V(A_i^S - (A_i mod P)^S)의 구간 합을 구한다. 여기서 V는 P의 지수를 센다.
문제
소수 가 주어진다.
를 의 소인수분해에서 의 지수로 정의하자. 더 정확히는, 이면 는 로 나누어지지만 로는 나누어지지 않는다. 또한 으로 정의한다.
예를 들어 이고 일 때, 이므로 이다.
또한 개의 원소를 가진 배열 가 주어진다. 이 배열에 대해 다음 두 종류의 쿼리 개를 처리해야 한다.
- 타입 쿼리:
1 pos val- 번째 원소에 을 대입한다. 즉 . - 타입 쿼리:
2 S L R- 를 출력한다.
입력
입력의 첫 줄에는 테스트 케이스의 수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 공백으로 구분된 세 개의 양의 정수 , , 가 주어진다. 은 배열의 원소 수, 는 쿼리의 수, 는 소수이다.
다음 줄에는 배열 의 원소를 나타내는 개의 양의 정수 , , , 이 주어진다.
이어지는 개의 줄에는 각각 하나의 쿼리가 주어지며, 다음 중 하나의 형태이다.
- 공백으로 구분된 개의 양의 정수:
1 pos val - 또는 공백으로 구분된 개의 양의 정수:
2 S L R
출력
각 테스트 케이스마다 Case #x: y를 한 줄에 출력한다. 여기서 는 테스트 케이스 번호(1부터 시작)이고, 는 각 타입 쿼리의 답을 나열한 목록이다.
제한
- 는 소수이다.
최대 10개의 테스트 케이스에 대해:
나머지 테스트 케이스에 대해:
타입 쿼리는 항상 하나 이상 존재한다.
힌트
샘플 케이스 #1에서
첫 번째 쿼리는 , , 인 타입 쿼리이다. 이 쿼리의 결과를 계산해 보자.
,
,
두 번째 쿼리는 타입 쿼리로, 에 를 대입해야 하므로 배열 는 69 94 62 67 91이 된다.