Oversleeping
题目描述
一列火车在城镇 A 与城镇 B 之间往返运行。
它在时间 0 从城镇 A 出发,然后重复以下过程:
前往城镇 B,耗时 X 秒;
在城镇 B 停留 Y 秒;
前往城镇 A,耗时 X 秒;
在城镇 A 停留 Y 秒。
更正式地,这些时间区间是半开区间,也就是说,对于每个 n=0,1,2,…:
在时间 t 满足 (2X+2Y)n≤t<(2X+2Y)n+X 时,火车正在前往城镇 B;
在时间 t 满足 (2X+2Y)n+X≤t<(2X+2Y)n+X+Y 时,火车在城镇 B 停留;
在时间 t 满足 (2X+2Y)n+X+Y≤t<(2X+2Y)n+2X+Y 时,火车正在前往城镇 A;
在时间 t 满足 (2X+2Y)n+2X+Y≤t<(2X+2Y)(n+1) 时,火车在城镇 A 停留。
Takahashi 想在时间 0 从城镇 A 出发乘坐这列火车并在城镇 B 下车。
出发后,他会重复以下过程:
睡眠 P 秒;
清醒 Q 秒。
同样,这些时间区间是半开区间,也就是说,对于每个 n=0,1,2,…:
在时间 t 满足 (P+Q)n≤t<(P+Q)n+P 时,Takahashi 在睡觉;
在时间 t 满足 (P+Q)n+P≤t<(P+Q)(n+1) 时,Takahashi 清醒。
只有当火车在城镇 B 停留且他处于清醒状态时,他才能在城镇 B 下车。
判断他能否在城镇 B 下车。如果可以,找出最早可以下车的时间。
在本题的约束下,可以证明最早时间是一个整数。
给出 T 个测试用例。对每个测试用例求解。
输入格式
输入从标准输入给出,格式如下:
T
case1
case2
⋮
caseT
每个测试用例的格式如下:
X Y P Q
输出格式
输出 T 行。
第 i 行应当包含 casei 的答案。
若存在一个时间使得 Takahashi 能在城镇 B 下车,该行应当输出该最早时间;否则,该行应当输出 infinity。
3
5 2 7 6
1 1 3 1
999999999 1 1000000000 1
20
infinity
1000000000999999999
提示
输入中的所有值均为整数。
1≤T≤10
1≤X≤109
1≤Y≤500
1≤P≤109
1≤Q≤500记 [a,b) 表示区间 a≤t<b。
在第一个样例中,火车在城镇 B 的停留时间为 [5,7),[19,21),[33,35),…,Takahashi 的清醒时间为 [7,13),[20,26),[33,39),…,因此他最早可以在时间 20 下车。
标签: AtCoder|abc193E
来源
AtCoder|abc193E