เราได้รับของเล่นขนาดใหญ่ (big toys) และของเล่นขนาดเล็ก (small toys) จำนวนหนึ่ง พารามิเตอร์ a คือจำนวนของเล่นขนาดใหญ่ที่แลกได้จากของเล่นขนาดเล็ก และ b คือจำนวนของเล่นขนาดเล็กที่แลกได้จากของเล่นขนาดใหญ่ เป้าหมายคือหาจำนวนของเล่นขนาดใหญ่สูงสุดที่สามารถได้มาโดยการแลกเปลี่ยนของเล่นขนาดเล็ก
อินพุต − big_toys = 8, small_toys = 20, a = 6, b = 4
เอาต์พุต − Maximize big when both big and small can be exchanged are − 11
คำอธิบาย − จำนวนของเล่นขนาดใหญ่สูงสุดที่ซื้อได้จากของเล่นขนาดเล็ก 20 ชิ้น คือ 11 ชิ้น
อินพุต − big_toys = 3, small_toys = 10, a = 4, b = 2
เอาต์พุต − Maximize big when both big and small can be exchanged are: 5
คำอธิบาย − จำนวนของเล่นขนาดใหญ่สูงสุดที่ซื้อได้จากของเล่นขนาดเล็ก 10 ชิ้น คือ 5 ชิ้น
วิธีการที่ใช้ในโปรแกรมด้านล่าง
- รับจำนวนของเล่นขนาดใหญ่ ขนาดเล็ก และอัตราแลกเปลี่ยน a, b
- หาก a < b ให้รวมของเล่นขนาดเล็กทั้งหมด (small_toys += b * big_toys) และตั้ง big_toys = 0
- คำนวณ big_toys ใหม่ = big_toys + (small_toys / a)
- คืนค่า big_toys ซึ่งเป็นจำนวนของเล่นขนาดใหญ่สูงสุด
- พิมพ์ผลลัพธ์
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int maximum(int big_toys, int small_toys, int a, int b) {
if (a < b) {
small_toys += b * big_toys;
big_toys = 0;
}
big_toys += (small_toys / a);
return big_toys;
}
int main() {
int big_toys = 8, small_toys = 20;
int a = 6, b = 4;
cout << "Maximize big when both big and small can be exchanged are: "
<< maximum(big_toys, small_toys, a, b);
return 0;
}
ผลลัพธ์
Maximize big when both big and small can be exchanged are: 11