#3203. Oversleeping

0

Oversleeping

Oversleeping

题目描述

一列火车在城镇 AA 与城镇 BB 之间往返运行。 它在时间 00 从城镇 AA 出发,然后重复以下过程:

前往城镇 BB,耗时 XX 秒; 在城镇 BB 停留 YY 秒; 前往城镇 AA,耗时 XX 秒; 在城镇 AA 停留 YY 秒。

更正式地,这些时间区间是半开区间,也就是说,对于每个 n=0,1,2,…n = 0, 1, 2, \dots:

在时间 tt 满足 (2X+2Y)n≤t<(2X+2Y)n+X(2X + 2Y)n ≤ t < (2X + 2Y)n + X 时,火车正在前往城镇 BB; 在时间 tt 满足 (2X+2Y)n+X≤t<(2X+2Y)n+X+Y(2X + 2Y)n + X ≤ t < (2X + 2Y)n + X + Y 时,火车在城镇 BB 停留; 在时间 tt 满足 (2X+2Y)n+X+Y≤t<(2X+2Y)n+2X+Y(2X + 2Y)n + X + Y ≤ t < (2X + 2Y)n + 2X + Y 时,火车正在前往城镇 AA; 在时间 tt 满足 (2X+2Y)n+2X+Y≤t<(2X+2Y)(n+1)(2X + 2Y)n + 2X + Y ≤ t < (2X + 2Y)(n + 1) 时,火车在城镇 AA 停留。

Takahashi 想在时间 00 从城镇 AA 出发乘坐这列火车并在城镇 BB 下车。 出发后,他会重复以下过程:

睡眠 PP 秒; 清醒 QQ 秒。

同样,这些时间区间是半开区间,也就是说,对于每个 n=0,1,2,…n = 0, 1, 2, \dots:

在时间 tt 满足 (P+Q)n≤t<(P+Q)n+P(P + Q)n ≤ t < (P + Q)n + P 时,Takahashi 在睡觉; 在时间 tt 满足 (P+Q)n+P≤t<(P+Q)(n+1)(P + Q)n + P ≤ t < (P + Q)(n + 1) 时,Takahashi 清醒。

只有当火车在城镇 BB 停留且他处于清醒状态时,他才能在城镇 BB 下车。
判断他能否在城镇 BB 下车。如果可以,找出最早可以下车的时间。
在本题的约束下,可以证明最早时间是一个整数。 给出 TT 个测试用例。对每个测试用例求解。

输入格式

输入从标准输入给出,格式如下: TT case1\rm case_1 case2\rm case_2 ⋮\hspace{9pt}\vdots caseT\rm case_T

每个测试用例的格式如下: XX YY PP QQ

输出格式

输出 TT 行。
第 ii 行应当包含 casei\rm case_i 的答案。
若存在一个时间使得 Takahashi 能在城镇 BB 下车,该行应当输出该最早时间;否则,该行应当输出 infinityinfinity。

3
5 2 7 6
1 1 3 1
999999999 1 1000000000 1
20
infinity
1000000000999999999

提示

输入中的所有值均为整数。 1≤T≤101 ≤ T ≤ 10 1≤X≤1091 ≤ X ≤ 10^9 1≤Y≤5001 ≤ Y ≤ 500 1≤P≤1091 ≤ P ≤ 10^9 1≤Q≤5001 ≤ Q ≤ 500记 [a,b)[a, b) 表示区间 a≤t<ba ≤ t < b。 在第一个样例中,火车在城镇 BB 的停留时间为 [5,7),[19,21),[33,35),…[5, 7), [19, 21), [33, 35), \dots,Takahashi 的清醒时间为 [7,13),[20,26),[33,39),…[7, 13), [20, 26), [33, 39), \dots,因此他最早可以在时间 2020 下车。

标签: AtCoder|abc193E

来源

AtCoder|abc193E