구간 최대공약수
시간 제한2초메모리 제한512 MB
배열에 구간 덧셈과 구간 최대공약수 질의를 처리한다. 차분 배열의 최대공약수와 한 점의 값을 함께 관리한다.
문제
자연수 개로 이루어진 수열 이 있다. 이 수열에 다음 두 가지 연산을 수행한다.
- 연속한 구간의 모든 원소에 같은 값을 더한다.
- 연속한 구간에 있는 원소의 최대공약수를 구한다.
연산을 입력에 주어진 순서대로 처리하고, 최대공약수를 구하는 연산마다 답을 출력하라.
입력
첫째 줄에 수열의 원소 개수 이 주어진다. ()
둘째 줄에 수열의 원소 개가 공백으로 구분되어 주어진다. 번째 수가 이고, 이다.
셋째 줄에 연산의 개수 가 주어진다. ()
이어지는 개의 줄에 연산이 한 줄에 하나씩 주어진다. 각 줄은 세 정수 , , 로 이루어진다.
- 가 0이 아니면 번째 원소부터 번째 원소까지 모든 원소에 를 더한다.
- 가 0이면 번째 원소부터 번째 원소까지의 최대공약수를 출력해야 한다.
는 이고, 와 는 을 만족한다. 가 0인 연산은 하나 이상 주어진다.
출력
가 0인 연산마다 그 구간의 최대공약수를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.