ได้รับ N, A, B, X, Y ต้องการหากำไรสูงสุดจากตัวเลข 1 ถึง N โดย:
- หาร A ลงตัว → กำไร +X
- หาร B ลงตัว → กำไร +Y
- ตัวเลขที่หารทั้ง A และ B ลงตัว เลือกกำไรสูงกว่า (max(X,Y))
ตัวอย่าง
อินพุต: N=4, A=2, B=3, X=2, Y=3
เอาต์พุต: 7
คำอธิบาย: 2,4 หาร 2 ลงตัว (+2+2=4), 3 หาร 3 ลงตัว (+3) รวม 7
อินพุต: N=5, A=2, B=4, X=1, Y=3
เอาต์พุต: 4
คำอธิบาย: 2 หาร 2 ลงตัว (+1), 4 หารทั้ง 2 และ 4 → เลือก Y=3 (+3) รวม 4
แนวทาง
- วนลูป i = 1 ถึง N
- ถ้า i%a==0 และ i%b==0 เพิ่ม max(X,Y)
- else if i%a==0 เพิ่ม X
- else if i%b==0 เพิ่ม Y
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int maximizeProfit(int n, int a, int b, int x, int y) {
int profit = 0;
for (int i = 1; i <= n; i++) {
if (i % a == 0 && i % b == 0) {
profit += (x >= y ? x : y);
} else if (i % a == 0) {
profit += x;
} else if (i % b == 0) {
profit += y;
}
}
return profit;
}
int main() {
int N = 6, A = 2, B = 4, X = 6, Y = 3;
cout << "Maximized profit is: " << maximizeProfit(N, A, B, X, Y);
return 0;
}
ผลลัพธ์
Maximized profit is: 2