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

หากำไรสูงสุดจากการหารลงตัวด้วย A และ B ที่มีกำไรต่างกัน ใน C++

ได้รับ 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