Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ นับว่าต้องรอกี่นาทีถึงจะเจอนักว่ายน้ำอย่างน้อย 1 คน


สมมติว่าเรามีตัวเลขสี่ตัว p, a, b และ c มีสระว่ายน้ำและนักว่ายน้ำสามคนอยู่ที่นั่น พวกเขาใช้เวลา a, b และ c นาทีเพื่อข้ามสระและกลับมาตามลำดับ ดังนั้น นักว่ายน้ำคนแรกจะอยู่ทางด้านซ้ายของสระหลังจากเวลา 0, a, 2a, 3a,... นาทีหลังจากเวลาเริ่มต้น ที่สองจะอยู่ที่ 0, b, 2b, 3b,... นาที และสำหรับอันที่สาม 0, c, 2c, 3c, ... ถ้าเราไปที่สระหลังจาก p นาทีพวกเขาเริ่มว่ายน้ำแล้วเราต้องหาวิธี เราต้องรออย่างน้อยที่สุดเพื่อให้ได้นักว่ายน้ำที่ด้านซ้ายของสระอย่างน้อยหนึ่งคน

ดังนั้นหากอินพุตเป็นเหมือน p =2; ก =6; ข =10; c =9 แล้วเอาท์พุตจะเป็นเพราะตอนตี 2 เราอยู่ใกล้สระ นักว่ายน้ำคนแรกจะกลับมาตอน 6 โมง ก็เลยต้องรออีก 4 หน่วย

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

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

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#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;
}

อินพุต

2, 6, 10, 9

ผลลัพธ์

4