Input
3
5 1 1
8 10 10
1000000 1 1000000
Output
5
8
499999500000
思路:如果好天气的天数大于坏天气,那么好天气会一直占优势,所以直接输出n天就好。否则就先算出最少需要几天好天气,赋值k。如果k%g==0,
sum=(k/g)*(b+g)-b,否则sum=(k/g)*(b+g)+k%g。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,g,b;
template<class T> T read()
{
T f=1,k=0;
char c=getchar();
while(c<'0' || c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0' && c<='9'){k=k*10+c-'0';c=getchar();}
return f*k;
}
int main()
{
int t;
t=read<int>();
while(t--)
{
n=read<ll>(),g=read<ll>(),b=read<ll>();
if(g>=b) cout<<n<<endl;
else
{
ll k=(n+1)/2;
ll sum=0;
if(k%g==0) sum=(k/g)*(g+b)-b;
else sum=(k/g)*(g+b)+k%g;
cout<<max(sum,n)<<endl;//答案不可能小于n
}
}
return 0;
}