#include<bits/stdc++.h>
using namespace std;
const int N = 2e6 + 5e5 + 10;
int T , A , B;
int a[N],b[N];
bool vis[N << 1],vis1[N << 1];
int main(){
//freopen("fruit.in","r",stdin);
//freopen("fruit.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> T >> A >> B;
if(T % A == 0 || T % B == 0)
{
cout << T;return 0;
}
int C = A / 2;int D = B / 2;
int L = T / A;int R = T / B;
if(A % B == 0)
{
int ans = T % B;
if(ans > D)
cout << T - ans + D;
return 0;
}
if(B % A == 0)
{
int ans = T % A;
if(ans > C)
cout << T - ans + C;
return 0;
}
for(int i = 0;i <= L + 1;i++)
{
a[i << 1] = A * i;
if(a[i << 1] <= T)
vis[a[i << 1]] = 1;
}
for(int i = 1;i <= (L + 1) << 1;i += 2)
{
a[i] = (i >> 1) * A + C;
if(a[i] <= T)
vis1[a[i]] = 1;
}
for(int i = 0;i <= R + 1;i++)
{
b[i << 1] = B * i;
if(b[i << 1] <= T)
vis1[b[i << 1]] = 1;
}
for(int i = 1;i <= (R + 1) << 1;i += 2)
{
b[i] = (i >> 1) * B + D;
if(b[i] <= T)
vis[b[i]] = 1;
}
for(int j = T;;j--)
{
int now = j;
while(!vis[now])
{
now --;
}
for(int i = now;i >= 0;i--)
{
if(vis[i])
{
if(vis[j - i])
{
cout << j;
return 0;
}
if(vis1[j - i])
{
cout << j;
return 0;
}
}
}
}
}
WA 了 俩 个 点
为啥
不开O2也跑得飞快,几毫秒,结果多跑了几个数。。。