#include <iostream>
int n, t1, t2;
bool check(int a) {
if (a*t1/t2+a >= n) {
return true;
}
return false;
}
int main(int argc, char *argv[]) {
std::cin >> n >> t1 >> t2;
if (t1 > t2) {std::swap(t1, t2);};
int l = 0, r = 5432, works, times;
int mid = (l+r)/2;
while (l <= r) {
if (check(mid)) {
r = mid-1;
} else {
l = mid+1;
}
mid = (l+r)/2;
}
times = l*t1;
if (l*t1%t2 != 0 && !(l + times/t2 == n+1)) {
times = ((l*t1)/t2+1)*t2;
}
works = l + times/t2;
std::cout << works << " " << times << '\n';
}
二分短的那个事件的执行次数
然后再看一下那个时间是不是整除长的那个事件,做相应处理