디버그
시간 제한3초메모리 제한512 MB
각 호출은 주어진 간격의 배수인 모든 인덱스를 1씩 증가시킨다. 완성된 배열에서 구간 합 질의에 답한다.
문제
Seán은 자기가 쓴 코드를 디버그하고 있다. 먼저 정수 개짜리 배열 seq를 만들고 전부 0으로 채운다. 그다음 C++로 작성한 아래 함수를 여러 번 호출한다.
void something( int jump ) {
int i = 0;
while( i < N ) {
seq[i] = seq[i] + 1;
i = i + jump;
}
}
이 함수는 인덱스가 jump의 배수인 원소를 모두 1씩 늘린다. 인덱스 0은 모든 jump의 배수라서 호출할 때마다 seq[0]이 1씩 늘어난다.
Seán은 함수를 정확히 번 호출하고, 인자로 를 이 순서대로 넘긴다.
호출이 모두 끝나면 Seán은 확인하고 싶은 구간 개를 고른다. 각 구간은 왼쪽 끝 과 오른쪽 끝 ()로 정해진다. 구간마다 seq[L] + seq[L+1] + ... + seq[R]을 구하라.
입력
첫째 줄에 배열의 크기 과 함수 호출 횟수 가 주어진다 (, ).
둘째 줄에 함수로 넘기는 인자 가 공백으로 구분되어 주어진다 ().
셋째 줄에 확인할 구간의 개수 가 주어진다 ().
이어지는 개 줄에 각 구간의 두 정수 와 가 주어진다 ().
출력
개 줄을 출력한다. 번째 줄에는 seq[L_i] + seq[L_i + 1] + ... + seq[R_i]의 값을 출력한다.