CF1354A.Alarm Clock

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Alarm Clock

题目描述

Polycarp 花了一整天为你准备题目。现在他需要至少睡 aa 分钟才能恢复精力。

Polycarp 只能通过闹钟的声音醒来。所以他刚刚入睡,第一次闹钟将在 bb 分钟后响起。

每次 Polycarp 醒来时,他会决定是否要继续睡觉。如果他总共睡眠的时间少于 aa 分钟,那么他会将闹钟重新设定为 cc 分钟后响起,并花费 dd 分钟再次入睡。否则,他会起床开始新的一天。

如果闹钟在 Polycarp 入睡过程中响起,他会再次将闹钟设定为 cc 分钟后响起,并再次尝试花 dd 分钟入睡。

你需要判断 Polycarp 什么时候能起床,或者报告他永远无法起床。

请参考样例说明部分以获得更详细的解释。

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

每个测试用例包含一行,包含四个整数 a,b,c,da, b, c, d1a,b,c,d1091 \le a, b, c, d \le 10^9),分别表示 Polycarp 需要睡眠的时间、第一次闹钟响起的时间、每次之后闹钟响起的时间以及 Polycarp 入睡所需的时间。

输出格式

对于每个测试用例,输出一个整数。如果 Polycarp 永远无法起床,则输出 1-1。否则,输出 Polycarp 起床所需的总时间。

说明/提示

在第一个测试用例中,Polycarp 在 33 分钟后醒来。他只休息了 33 分钟,而他需要 1010 分钟。因此,他将闹钟重新设定为 66 分钟后响起,并花 44 分钟入睡。这样,他又休息了 22 分钟,总共睡了 3+2=53+2=5 分钟。然后他重复这个过程三次,最终总共睡了 1111 分钟。最后,他起床了。他在第一次闹钟响起前花了 33 分钟,然后又重设了闹钟四次。答案是 3+4×6=273+4 \times 6 = 27

第二个样例与第一个几乎相同,只是 Polycarp 需要 1111 分钟的睡眠而不是 1010 分钟。然而,这并没有改变结果,因为他用这些闹钟参数同样可以获得 1111 分钟的睡眠。

在第三个测试用例中,Polycarp 在第一次闹钟响起后就已经休息够了。因此,答案是 b=9b=9

在第四个测试用例中,Polycarp 在 55 分钟后醒来。不幸的是,他会无限次地重设闹钟,甚至无法休息一分钟 :(

由 ChatGPT 4.1 翻译

样例

7
10 3 6 4
11 3 6 4
5 9 4 10
6 5 2 3
1 1 1 1
3947465 47342 338129 123123
234123843 13 361451236 361451000
27
27
9
-1
1
6471793
358578060125049

在线编程 IDE

建议全屏模式获得最佳体验