#aBC193E. [ABC193E] Oversleeping

[ABC193E] Oversleeping

AT_abc193_e [ABC193E] Oversleeping

题目描述

有一列往返于城市 AA 和城市 BB 之间的火车。火车在时刻 00 从城市 AA 出发,之后按照以下流程循环:

  • XX 秒移动到城市 BB
  • 在城市 BB 停留 YY 秒;
  • XX 秒移动回城市 AA
  • 在城市 AA 停留 YY 秒。

更严格地说,这些时间段被视为半开区间。即,对于 n=0,1,2,n = 0, 1, 2, \dots,有:

  • 在满足 (2X+2Y)nt<(2X+2Y)n+X(2X + 2Y)n \leq t < (2X + 2Y)n + X 的时刻 tt,火车正在前往城市 BB
  • 在满足 (2X+2Y)n+Xt<(2X+2Y)n+X+Y(2X + 2Y)n + X \leq t < (2X + 2Y)n + X + Y 的时刻 tt,火车停在城市 BB
  • 在满足 (2X+2Y)n+X+Yt<(2X+2Y)n+2X+Y(2X + 2Y)n + X + Y \leq t < (2X + 2Y)n + 2X + Y 的时刻 tt,火车正在返回城市 AA
  • 在满足 (2X+2Y)n+2X+Yt<(2X+2Y)(n+1)(2X + 2Y)n + 2X + Y \leq t < (2X + 2Y)(n + 1) 的时刻 tt,火车停在城市 AA

高桥君乘坐火车,并在时刻 00 从城市 AA 出发,打算在城市 BB 下车。高桥君在时刻 00 出发后,按照以下循环:

  • PP 秒;
  • QQ 秒。

这些时间段同样被视为半开区间。即,对于 n=0,1,2,n = 0, 1, 2, \dots,有:

  • 在满足 (P+Q)nt<(P+Q)n+P(P + Q)n \leq t < (P + Q)n + P 的时刻 tt,高桥君在睡觉;
  • 在满足 (P+Q)n+Pt<(P+Q)(n+1)(P + Q)n + P \leq t < (P + Q)(n + 1) 的时刻 tt,高桥君是清醒的。

只有当火车停在城市 BB,且高桥君是清醒的时,他才能在城市 BB 下车。

请判断高桥君是否有可能在城市 BB 下车。如果可以,请求出最早能下车的时刻。如果不能,请输出 infinity

已知在本题的约束下,答案一定为整数。

给定 TT 组数据,请分别输出每组的答案。

输入格式

输入通过标准输入给出,格式如下:

TT
case1\rm case_1
case2\rm case_2
\hspace{9pt}\vdots
caseT\rm case_T

每组数据格式如下:

XX YY PP QQ

输出格式

输出 TT 行。
ii 行输出第 ii 组数据的答案。如果存在能在城市 BB 下车的时刻,输出最小的那个时刻(整数);如果不存在,输出 infinity

输入输出样例 #1

输入 #1

3
5 2 7 6
1 1 3 1
999999999 1 1000000000 1

输出 #1

20
infinity
1000000000999999999

说明/提示

数据范围

  • 所有输入均为整数
  • 1T101 \leq T \leq 10
  • 1X1091 \leq X \leq 10^9
  • 1Y5001 \leq Y \leq 500
  • 1P1091 \leq P \leq 10^9
  • 1Q5001 \leq Q \leq 500

样例解释 1

[a,b)[a, b) 表示区间 at<ba \leq t < b。对于第 11 组数据,火车在城市 BB 停车的时刻为 [5,7),[19,21),[33,35),[5, 7), [19, 21), [33, 35), \dots,高桥君清醒的时刻为 [7,13),[20,26),[33,39),[7, 13), [20, 26), [33, 39), \dots,因此他第一次能在时刻 2020 在城市 BB 下车。

由 ChatGPT 4.1 翻译