AT_abc193_e [ABC193E] Oversleeping
题目描述
有一列往返于城市 A 和城市 B 之间的火车。火车在时刻 0 从城市 A 出发,之后按照以下流程循环:
- 用 X 秒移动到城市 B;
- 在城市 B 停留 Y 秒;
- 用 X 秒移动回城市 A;
- 在城市 A 停留 Y 秒。
更严格地说,这些时间段被视为半开区间。即,对于 n=0,1,2,…,有:
- 在满足 (2X+2Y)n≤t<(2X+2Y)n+X 的时刻 t,火车正在前往城市 B;
- 在满足 (2X+2Y)n+X≤t<(2X+2Y)n+X+Y 的时刻 t,火车停在城市 B;
- 在满足 (2X+2Y)n+X+Y≤t<(2X+2Y)n+2X+Y 的时刻 t,火车正在返回城市 A;
- 在满足 (2X+2Y)n+2X+Y≤t<(2X+2Y)(n+1) 的时刻 t,火车停在城市 A。
高桥君乘坐火车,并在时刻 0 从城市 A 出发,打算在城市 B 下车。高桥君在时刻 0 出发后,按照以下循环:
这些时间段同样被视为半开区间。即,对于 n=0,1,2,…,有:
- 在满足 (P+Q)n≤t<(P+Q)n+P 的时刻 t,高桥君在睡觉;
- 在满足 (P+Q)n+P≤t<(P+Q)(n+1) 的时刻 t,高桥君是清醒的。
只有当火车停在城市 B,且高桥君是清醒的时,他才能在城市 B 下车。
请判断高桥君是否有可能在城市 B 下车。如果可以,请求出最早能下车的时刻。如果不能,请输出 infinity。
已知在本题的约束下,答案一定为整数。
给定 T 组数据,请分别输出每组的答案。
输入格式
输入通过标准输入给出,格式如下:
T
case1
case2
⋮
caseT
每组数据格式如下:
X Y P Q
输出格式
输出 T 行。
第 i 行输出第 i 组数据的答案。如果存在能在城市 B 下车的时刻,输出最小的那个时刻(整数);如果不存在,输出 infinity。
输入输出样例 #1
输入 #1
3
5 2 7 6
1 1 3 1
999999999 1 1000000000 1
输出 #1
20
infinity
1000000000999999999
说明/提示
数据范围
- 所有输入均为整数
- 1≤T≤10
- 1≤X≤109
- 1≤Y≤500
- 1≤P≤109
- 1≤Q≤500
样例解释 1
用 [a,b) 表示区间 a≤t<b。对于第 1 组数据,火车在城市 B 停车的时刻为 [5,7),[19,21),[33,35),…,高桥君清醒的时刻为 [7,13),[20,26),[33,39),…,因此他第一次能在时刻 20 在城市 B 下车。
由 ChatGPT 4.1 翻译