บทนำ
โจทย์นี้คล้ายกับโจทย์ก่อนหน้า แต่ต้องการหา จำนวนเต็มบวกสูงสุด (Maximum) ที่หารด้วย C ลงตัว และอยู่ในช่วง [A, B]
หมายเหตุ: เนื้อหาและโค้ดในบทความต้นฉบับดูเหมือนจะซ้ำกับโจทย์ "Minimum" (ID 1004081881) ซึ่งอาจเป็นข้อผิดพลาดของแหล่งที่มา นี่คือโค้ดที่แก้ไขให้ตรงกับโจทย์ "Maximum"
ขั้นตอนการแก้ปัญหา (Maximum)
- หาตัวคูณของ C ที่มากที่สุดแต่ไม่เกิน B:
res = (B / C) * C - ถ้าค่านั้นน้อยกว่า A → ไม่มีคำตอบ (คืนค่า -1 หรือ 0)
- มิฉะนั้นคืนค่า 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 เท่านั้น