atcoder#ABC193E. [ABC193E] Oversleeping

[ABC193E] Oversleeping

题目描述

A A と街 B B の間を往復する電車があります。 電車は時刻 0 0 に街 A A を出発した後、

  • X X 秒かけて街 B B に移動
  • B B Y Y 秒停車
  • X X 秒かけて街 A A に移動
  • A A Y Y 秒停車

を繰り返します。
より厳密には、これらは半開区間として扱います。すなわち、n = 0, 1, 2,  n\ =\ 0,\ 1,\ 2,\ \dots について、

  • (2X + 2Y)n < = t < (2X + 2Y)n + X (2X\ +\ 2Y)n\ <\ =\ t\ <\ (2X\ +\ 2Y)n\ +\ X を満たす時刻 t t には電車は街 B B に移動している
  • $ (2X\ +\ 2Y)n\ +\ X\ <\ =\ t\ <\ (2X\ +\ 2Y)n\ +\ X\ +\ Y $ を満たす時刻 t t には電車は街 B B で停車している
  • $ (2X\ +\ 2Y)n\ +\ X\ +\ Y\ <\ =\ t\ <\ (2X\ +\ 2Y)n\ +\ 2X\ +\ Y $ を満たす時刻 t t には電車は街 A A に移動している
  • $ (2X\ +\ 2Y)n\ +\ 2X\ +\ Y\ <\ =\ t\ <\ (2X\ +\ 2Y)(n\ +\ 1) $ を満たす時刻 t t には電車は街 A A で停車している

が満たされます。

高橋くんは電車に乗って時刻 0 0 に街 A A を出発し、街 B B で電車を降りようと思っています。 高橋くんは時刻 0 0 に街 A A を出発した後、

  • P P 秒間眠っている
  • Q Q 秒間起きている

を繰り返します。
これらも半開区間として扱います。すなわち、n = 0, 1, 2,  n\ =\ 0,\ 1,\ 2,\ \dots について、

  • (P + Q)n < = t < (P + Q)n + P (P\ +\ Q)n\ <\ =\ t\ <\ (P\ +\ Q)n\ +\ P を満たす時刻 t t には高橋くんは眠っている
  • (P + Q)n + P < = t < (P + Q)(n + 1) (P\ +\ Q)n\ +\ P\ <\ =\ t\ <\ (P\ +\ Q)(n\ +\ 1) を満たす時刻 t t には高橋くんは起きている

が満たされます。

B B に電車が停車しており、かつ、高橋くんが起きていれば高橋くんは街 B B で電車を降りることができます。
高橋くんが街 B B で電車を降りることができるか判定し、できる場合は、最短でいつになるか求めてください。
なお、この値はこの問題の制約下で整数になることが証明できます。

T T 個のケースが与えられるので、それぞれについて答えを求めてください。

输入格式

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

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

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

X X Y Y P P Q Q

输出格式

T T 行出力せよ。
i i 行目には、 casei \rm\ case_i についてこの問題を解き、街 B B で電車を降りられる時刻が存在する場合、そのような時刻のうち最小のものを整数で出力せよ。 街 B B で電車を降りられる時刻が存在しない場合、infinity と出力せよ。

题目大意

一个人坐公交从 AA 站坐到 BB 站,公交车先用 xx 秒到 BB 站,然后在 BB 站停 yy 秒,再用 xx 秒到 AA 站,再在 AA 站停 yy 秒,如此循环往复。而这个人先睡眠 pp 秒,再醒来 qq 秒,如此循环往复。求这个人最早何时能在 BB 站下车,若永远不能,输出 infinityinfinity

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

提示

制約

  • 入力は全て整数
  • 1 < = T < = 10 1\ <\ =\ T\ <\ =\ 10
  • 1 < = X < = 109 1\ <\ = X\ <\ =\ 10^9
  • 1 < = Y < = 500 1\ <\ = Y\ <\ =\ 500
  • 1 < = P < = 109 1\ <\ = P\ <\ =\ 10^9
  • 1 < = Q < = 500 1\ <\ = Q\ <\ =\ 500

Sample Explanation 1

[a, b) [a,\ b) で区間 a < = t < b a\ <\ =\ t\ <\ b を表すことにします。 1 1 個目のケースでは、電車が街 B B で停車している時刻は [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 なので、時刻 20 20 に初めて街 B B で電車を降りることが出来ます。