선형 합동 생성기

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

요약
선형 합동 생성기와 두 인덱스 구간이 주어질 때, 첫 구간의 i와 둘째 구간의 j에 대한 X_i mod (X_j+1)의 합을 구한다.
난이도

어려움10점 중 9점

유형
수학, 정수론, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

점화식

Xn+1=((aXn+c) mod m)X_{n+1} = ((a X_n + c) \bmod {m})

으로 정의되는 생성기가 주어진다. 여기서 X={Xn}n=0∞X = \{X_n\}_{n=0}^{\infty}는 생성되는 의사 난수 수열이고, mm, aa, cc, X0X_0는 생성기를 결정하는 정수 상수이다.

또한 두 정수 구간 [l1,r1][l_1, r_1]과 [l2,r2][l_2, r_2]가 주어진다. 다음 값을 계산하라.

∑i=l1r1∑j=l2r2(Xi mod (Xj+1))\sum_{i=l_1}^{r_1}\sum_{j=l_2}^{r_2}(X_i \bmod {(X_j + 1)})

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 수 TT가 주어진다. 다음에 모든 테스트 케이스가 주어진다. 각 테스트 케이스는 다음과 같다.

한 줄에 여덟 개의 정수 mm, aa, cc, X0X_0, l1l_1, r1r_1, l2l_2, r2r_2가 주어진다.

출력

각 테스트 케이스마다 한 줄에 “Case #x: y”를 출력한다. 여기서 x는 1부터 시작하는 테스트 케이스 번호이고, y는 이 테스트 케이스의 답이다.

제한

  • 1≤T≤1051 \le T \le 10^5
  • 1≤m≤1061 \le m \le 10^6
  • 0≤a,c,X0<m0 \le a, c, X_0 < m
  • 0≤l1≤r1≤1060 \le l_1 \le r_1 \le 10^6
  • 0≤l2≤r2≤1060 \le l_2 \le r_2 \le 10^6
  • 모든 테스트 케이스에서 mm의 합은 2×1062 \times 10^6을 넘지 않는다.

힌트

첫 번째 예제에서 X={Xn}n=0∞={1,5,2,6,3,0,… }X = \{X_n\}_{n=0}^{\infty} = \{1, 5, 2, 6, 3, 0, \dots\}이다.

두 번째 예제에서 X={Xn}n=0∞={1,9,3,5,… }X = \{X_n\}_{n=0}^{\infty} = \{1, 9, 3, 5, \dots\}이다.

예제1

  1. 예제 1

    입력
    2
    7 1 4 1 2 3 4 5
    10 3 6 1 2 3 1 2
    
    예상 출력
    Case #1: 4
    Case #2: 12