参考程序:
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, a, b;
int l, r;
int check(int v)
{
long long x, y, t;
x = 1ll * v * a;
y = 1ll * v * b;
if (y > m)
{
t = (y - m + (b - a) - 1) / (b - a);
y -= t * (b - a);
x += t * (b - a);
}
return x <= n && y <= m;
}
int main()
{
scanf("%d%d", &n, &m);
scanf("%d%d", &a, &b);
if (n > m)
swap(n, m);
if (a > b)
swap(a, b);
if (a == b)
{
printf("%d\n", n / a);
return 0;
}
l = 0;
r = n;
while (l < r)
{
int mid = (l + r + 1) >> 1;
if (check(mid))
l = mid;
else
r = mid - 1;
}
printf("%d\n", r);
return 0;
}