Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số lít nước tối đa có thể mua với N Rupee trong C++


Chúng ta được cho N rupee. Mục tiêu là mua nhiều nước nhất có thể với số tiền đó, nơi giá chai nước như sau:

  • Chai nhựa: A Rupee cho 1 lít
  • Chai thủy tinh: B Rupee cho 1 lít
  • Chai thủy tinh: B Rupee cho 1 lít

Bây giờ chi phí thực tế của chai thủy tinh trở thành B - E rupee. Sau khi trả lại.

Nếu chi phí chai nhựa vẫn nhỏ hơn B - E, thì chỉ mua chai nhựa. Ngược lại mua (N - E) / (B - E) chai thủy tinh và dùng tiền còn lại mua chai nhựa.

Ví dụ

Đầu vào

N = 6, A = 5, B = 4, E = 3;

Đầu ra

Số lít nước tối đa: 3

Giải thích − B - E = 1, 1 < A. N - E = 3, với 3 rupee mua 3 chai thủy tinh 1 lít.

Đầu vào

N = 10, A = 5, B = 10, E = 3;

Đầu ra

Số lít nước tối đa: 2

Giải thích − B - E = 7, 7 > A. N / A = 10 / 5 = 2 chai nhựa có thể mua.

Phương pháp sử dụng trong chương trình dưới đây

  • Số nguyên money, bottle, gbottle, gempty dùng cho giá và số tiền chúng ta có.
  • Hàm maxWater(int mny, int pb, int gb, int ge) nhận tất cả giá trị làm tham số và in ra lượng nước có thể mua.
  • Biến litrs lưu lượng nước tính được theo lít.
  • Truyền pb làm giá trị mới của chai thủy tinh (giá gốc - giá trả lại).
  • Nếu giá gb truyền vào nhỏ hơn pb, thì mua (mny - ge) / gb chai thủy tinh.
  • Trừ số tiền này để tính tiền còn lại, mny -= ltrs * gb.
  • Bây giờ chai nhựa có thể mua là mny / pb.
  • Nếu giá pb truyền vào lớn hơn pb thì chỉ mua mny / pb chai nhựa.
  • In kết quả trong cả hai trường hợp vì số chai chính là số lít nước. Mỗi chai dung tích 1 lít.

Ví dụ mã nguồn

// CPP implementation of the above approach
#include <bits/stdc++.h> 
using namespace std; 

void maxWater(int mny, int pb, int gb, int ge) { 
    int litrs; 
    // nếu mua chai thủy tinh có lợi
    if (gb < pb) { 
        // số chai thủy tinh
        int tmp = mny - ge / gb; 
        litrs = tmp > 0 ? tmp : 0; 
        mny -= litrs * gb; 
        // số chai nhựa
        litrs += mny / pb; 
        cout << "Số lít nước tối đa: " << litrs << endl; 
    } 
    // chỉ chai nhựa
    else 
        cout << "Số lít nước tối đa chỉ chai nhựa: " << (mny / pb) << endl; 
} 

int main() { 
    int money = 20, pbottle = 5, gbottle = 10, gempty = 8; 
    gbottle = gbottle - gempty; // chi phí mới chai thủy tinh
    maxWater(money, pbottle, gbottle, gempty); 
}

Kết quả

Số lít nước tối đa: 14