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

หาจำนวนเต็มบวกสูงสุดที่หารด้วย C ลงตัวและอยู่ในช่วง [A, B] ใน C++


บทนำ

โจทย์นี้คล้ายกับโจทย์ก่อนหน้า แต่ต้องการหา จำนวนเต็มบวกสูงสุด (Maximum) ที่หารด้วย C ลงตัว และอยู่ในช่วง [A, B]

หมายเหตุ: เนื้อหาและโค้ดในบทความต้นฉบับดูเหมือนจะซ้ำกับโจทย์ "Minimum" (ID 1004081881) ซึ่งอาจเป็นข้อผิดพลาดของแหล่งที่มา นี่คือโค้ดที่แก้ไขให้ตรงกับโจทย์ "Maximum"

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

  1. หาตัวคูณของ C ที่มากที่สุดแต่ไม่เกิน B: res = (B / C) * C
  2. ถ้าค่านั้นน้อยกว่า A → ไม่มีคำตอบ (คืนค่า -1 หรือ 0)
  3. มิฉะนั้นคืนค่า res

ตัวอย่างโค้ด C++ (แก้ไขแล้ว)

#include <iostream>
using namespace std;

int findMaxNumber(int a, int b, int c) {
    int res = (b / c) * c;  // ตัวคูณของ c ที่มากที่สุด <= b
    if (res < a)
        return -1;  // ไม่มีคำตอบในช่วง [a, b]
    return res;
}

int main() {
    int a = 5, b = 10, c = 4;
    cout << "Maximum number X: " << findMaxNumber(a, b, c);
    return 0;
}

ผลลัพธ์ตัวอย่าง

Maximum number X: 8

คำอธิบาย: ตัวคูณของ 4 ในช่วง [5,10] คือ 8 เท่านั้น