Polycarp需要睡分鐘,分鐘後他的鬧鐘第一次響,鬧鐘每一次響如果他還沒睡夠會讓鬧鐘分鐘後再響,被鬧鐘吵醒之後他需要分鐘才能睡着,問多久他才能睡夠。
注意,即使睡夠了,也只有鬧鐘響的時候Polycarp纔會起牀。
顯然,時直接輸出即可;
若並且時,Polycarp永遠睡不夠;
剩餘的情況就是Polycarp在分鐘之後還需要睡分鐘,每分鐘可以睡分鐘,計算一下,向上取整。
```
#include <bits/stdc++.h>
#define pb push_back
#define fir first
#define sec second
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define sp system("pause")
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e5+5;
const int mod=10007;
const db pi=acos(-1.0);
int main()
{
int t;
ll a,b,c,d;
cin>>t;
while(t--)
{
cin>>a>>b>>c>>d;
if(a<=b)
{
cout<<b<<endl;
continue;
}
if(c<=d)
{
cout<<-1<<endl;
continue;
}
ll ans=b+(a-b)/(c-d)*c;
if((a-b)%(c-d)!=0) ans+=c;//手動向上取整,取餘不爲0就+1
cout<<ans<<endl;
}
#ifndef ONLINE_JUDGE
sp;
#endif
}