CF1354A.Alarm Clock
入门
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Polycarp has spent the entire day preparing problems for you. Now he has to sleep for at least a minutes to feel refreshed.
Polycarp can only wake up by hearing the sound of his alarm. So he has just fallen asleep and his first alarm goes off in b minutes.
Every time Polycarp wakes up, he decides if he wants to sleep for some more time or not. If he's slept for less than a minutes in total, then he sets his alarm to go off in c minutes after it is reset and spends d minutes to fall asleep again. Otherwise, he gets out of his bed and proceeds with the day.
If the alarm goes off while Polycarp is falling asleep, then he resets his alarm to go off in another c minutes and tries to fall asleep for d minutes again.
You just want to find out when will Polycarp get out of his bed or report that it will never happen.
Please check out the notes for some explanations of the example.
波利卡普花了一整天时间为你们准备题目。现在他至少需要睡 a 分钟才能恢复精神。
波利卡普只能靠闹钟的声音唤醒。因此,他刚刚入睡,而他的第一个闹钟将在 b 分钟后响起。
每次波利卡普醒来时,他都会决定是否要继续再睡一会儿。如果他截至目前的总睡眠时间少于 a 分钟,那么他就将闹钟重新设定为在重设后 c 分钟响起,并花费 d 分钟再次入睡;否则,他便起床开始新的一天。
如果闹钟在波利卡普正在入睡的过程中响起,那么他会将闹钟再次重设为在重设后 c 分钟响起,并再次尝试花费 d 分钟入睡。
你只需计算出波利卡普最终起床的时间,或判断该事件永远不会发生。
请参阅样例说明部分以获取更多解释。
输入格式
The first line contains one integer t (1≤t≤1000) — the number of testcases.
The only line of each testcase contains four integers a,b,c,d (1≤a,b,c,d≤109) — the time Polycarp has to sleep for to feel refreshed, the time before the first alarm goes off, the time before every succeeding alarm goes off and the time Polycarp spends to fall asleep.
第一行包含一个整数 t(1≤t≤1000)—— 测试用例的数量。
每个测试用例仅有一行,包含四个整数 a,b,c,d(1≤a,b,c,d≤109)—— 分别表示 Polycarp 为感到神清气爽所需睡眠的时间、第一次闹钟响起前的时间、此后每次闹钟响起前的时间间隔,以及 Polycarp 入睡所需的时间。
输出格式
For each test case print one integer. If Polycarp never gets out of his bed then print -1. Otherwise, print the time it takes for Polycarp to get out of his bed.
对于每个测试用例,输出一个整数。如果 Polycarp 永远无法离开他的床,则输出 −1;否则,输出 Polycarp 离开床所需的时间。
输入输出样例
输入#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
输出#1
27 27 9 -1 1 6471793 358578060125049
说明/提示
In the first testcase Polycarp wakes up after 3 minutes. He only rested for 3 minutes out of 10 minutes he needed. So after that he sets his alarm to go off in 6 minutes and spends 4 minutes falling asleep. Thus, he rests for 2 more minutes, totaling in 3+2=5 minutes of sleep. Then he repeats the procedure three more times and ends up with 11 minutes of sleep. Finally, he gets out of his bed. He spent 3 minutes before the first alarm and then reset his alarm four times. The answer is 3+4⋅6=27.
The second example is almost like the first one but Polycarp needs 11 minutes of sleep instead of 10. However, that changes nothing because he gets 11 minutes with these alarm parameters anyway.
In the third testcase Polycarp wakes up rested enough after the first alarm. Thus, the answer is b=9.
In the fourth testcase Polycarp wakes up after 5 minutes. Unfortunately, he keeps resetting his alarm infinitely being unable to rest for even a single minute :(
在第一个测试用例中,Polycarp 在 3 分钟后醒来。他在所需的 10 分钟睡眠中仅休息了 3 分钟。因此,他将闹钟设为 6 分钟后响起,并花费 4 分钟入睡。于是他又休息了 2 分钟,累计睡眠时间为 3+2=5 分钟。接着他重复该过程三次,最终获得 11 分钟的睡眠。最后,他起床离开床铺。他在第一次闹钟响起前花费了 3 分钟,之后又四次重设闹钟。答案为 3+4⋅6=27。
第二个例子与第一个几乎相同,只是 Polycarp 所需的睡眠时间由 10 分钟变为 11 分钟。然而,这并不影响结果,因为他借助这些闹钟参数仍能获得 11 分钟的睡眠。
在第三个测试用例中,Polycarp 在第一次闹钟响起后即已充分休息。因此答案为 b=9。
在第四个测试用例中,Polycarp 在 5 分钟后醒来。不幸的是,他陷入无限重设闹钟的循环,甚至无法获得哪怕一分钟的休息 :(
输入解题思路,AI测评打分。不知道怎么写?