Cho p, a, b, c. Ba bơi lội về bên trái bể sau 0, a, 2a...; 0, b, 2b...; 0, c, 2c... phút. Đến lúc p, chờ bao lâu để gặp ít nhất một người.
Ví dụ
Với p=2, a=6, b=10, c=9, đầu ra 4. Lúc 2 đến, bơi lội 1 về lúc 6 → chờ 4.
Giải thuật
Giảm p đi 1 (vì đến sau phút p). Thời gian chờ cho bơi lội chu kỳ t là t - (p % t + 1). Lấy min của 3 giá trị.
Mã C++
#include <bits/stdc++.h>
using namespace std;
int solve(int p, int a, int b, int c) {
p--;
return min(a - (p % a + 1), min(b - (p % b + 1), c - (p % c + 1)));
}
int main() {
int p = 2, a = 6, b = 10, c = 9;
cout << solve(p, a, b, c) << endl;
}
Đầu vào / Đầu ra
Input: 2, 6, 10, 9
Output: 4