Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để đếm xem chúng ta phải đợi bao nhiêu phút để gặp ít nhất một vận động viên bơi lội

Giả sử chúng ta có bốn số p, a, b và c. Có một hồ bơi và ba người bơi ở đó. Họ mất a, b và c phút để vượt qua hồ bơi và quay trở lại tương ứng. Vì vậy, người bơi đầu tiên sẽ ở phía bên trái của hồ bơi sau 0, a, 2a, 3a, ... phút sau thời gian bắt đầu. Cái thứ hai sẽ ở 0, b, 2b, 3b, ... phút và cái thứ ba là 0, c, 2c, 3c, ... Nếu chúng ta đến thăm bể bơi sau p phút chúng đã bắt đầu bơi, chúng ta phải tìm cách chúng tôi phải đợi ít nhất thời gian để có được ít nhất một trong số những vận động viên bơi lội ở phía bên trái của hồ bơi.

Vì vậy, nếu đầu vào giống như p =2; a =6; b =10; c =9 thì kết quả sẽ là vì lúc 2 chúng ta ở gần bể bơi, người bơi đầu tiên sẽ quay lại lúc 6 nên chúng ta phải đợi 4 đơn vị thời gian.

bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

(decrease p by 1)
return minimum of (a - (p mod a + 1)), (b - (p mod b + 1)) and (c - (p mod c + 1))

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
   int a = 6;
   int b = 10;
   int c = 9;
   cout << solve(p, a, b, c) << endl;
}

Đầu vào

2, 6, 10, 9

Đầu ra

4