아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

해싱

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

요약
선형 해시 값을 m으로 나눈 나머지가 구간 [c, d]에 들어가는 개수를 센다.
난이도

보통10점 중 7점

유형
수학, 정수론, 이분 탐색
정답자
아직 제출이 없습니다

문제

상근이는 정수를 00부터 m−1m-1까지의 값으로 대응시키는 해싱 함수

h(y)=(a⋅y+b) mod mh(y) = (a \cdot y + b) \bmod m

를 만들었다.

정수 xx, nn, cc, dd가 주어질 때, 해시 값

h(x), h(x+1), …, h(x+n)h(x),\ h(x+1),\ \dots,\ h(x+n)

중에서 값이 구간 [c,d][c, d] 안에 들어가는 것이 몇 개인지 세는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 tt (1≤t≤1051 \le t \le 10^{5})가 주어진다.

다음 tt개의 줄에는 각각 정수 aa, bb, xx, nn, cc, dd, mm이 공백으로 구분되어 주어진다.

  • 1≤m≤10151 \le m \le 10^{15}
  • 0≤c≤d<m0 \le c \le d < m
  • 0≤a,b<m0 \le a, b < m
  • 0≤x+n≤10150 \le x + n \le 10^{15}
  • a⋅(x+n)+b≤1015a \cdot (x + n) + b \le 10^{15}

입력으로 주어지는 모든 수는 음이 아닌 정수이다.

출력

각 테스트 케이스마다 c≤(a⋅(x+i)+b) mod m≤dc \le (a \cdot (x + i) + b) \bmod m \le d 를 만족하는 ii (0≤i≤n0 \le i \le n)의 개수를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    2
    2 3 1 3 0 1 7
    1 0 0 8 0 8 9
    
    예상 출력
    1
    9
    
  2. 예제 2

    입력
    1
    0 5 100 10 5 5 13
    
    예상 출력
    11
    
  3. 예제 3

    입력
    1
    7 3 2 50 0 10 11
    
    예상 출력
    51