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

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


คำอธิบายปัญหา

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

ตัวอย่าง: p = 2; a = 6; b = 10; c = 9 ผลลัพธ์คือ 4 เพราะที่นาที 2 เราอยู่ที่สระ ตัวแรกกลับมาที่นาที 6 ต้องรอ 4 หน่วยเวลา

ขั้นตอนการแก้ปัญหา

ลด p ลง 1
คืนค่า min(a - (p mod a + 1), b - (p mod b + 1), c - (p mod c + 1))

ตัวอย่างโค้ด 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;
    int a = 6;
    int b = 10;
    int c = 9;
    cout << solve(p, a, b, c) << endl;
}

อินพุต

2, 6, 10, 9

เอาต์พุต

4