atcoder#ARC127F. [ARC127F] ±AB

[ARC127F] ±AB

配点 : 10001000

問題文

整数 A,B,V,MA,B,V,M が与えられます. ここで,AABB は互いに素であることが保証されます. また,あなたは整数 xx を持っています. 最初,x=Vx=V です.

あなたは,以下の 44 種類の操作を好きな順序で好きな回数繰り返すことができます.

  • xx の値を,x+Ax+A で置き換える.
  • xx の値を,xAx-A で置き換える.
  • xx の値を,x+Bx+B で置き換える.
  • xx の値を,xBx-B で置き換える.

ただし,操作のどの瞬間においても,0xM0 \leq x \leq M が成立している必要があります.

この条件の元で,xx がとりうる値が何種類あるかを求めてください.

一つの入力ファイルにつき,TT 個のテストケースを解いてください.

制約

  • 1T1051 \leq T \leq 10^5
  • 1A<BM1091 \leq A < B \leq M \leq 10^9
  • AABB は互いに素である.
  • 0VM0 \leq V \leq M
  • 入力される値はすべて整数である.

入力

入力は以下の形式で標準入力から与えられる.

TT

case1case_1

case2case_2

\vdots

case3case_3

各ケースは以下の形式で与えられる.

AA BB VV MM

出力

各ケースについて答えを出力せよ.

5
3 5 0 5
1 2 5 10
5 8 4 9
10 99 48 106
500000000 500000001 123456789 900000000
4
11
4
10
800000002

11 つ目のテストケースでは,x=0,2,3,5x=0,2,3,544 通りの値が考えられます.