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

ปริมาณน้ำสูงสุดที่ซื้อได้ด้วย N บาทใน C++


เราได้รับ N บาท เป้าหมายคือซื้อน้ำมากที่สุด โดยราคาขวดน้ำมีดังนี้:

  • ขวดพลาสติก: A บาท ต่อ 1 ลิตร
  • ขวดแก้ว: B บาท ต่อ 1 ลิตร
  • คืนขวดแก้วได้ E บาท (ดังนั้นต้นทุนจริงขวดแก้ว = B - E บาท)

ถ้าราคาพลาสติก (A) ยังถูกกว่า B-E ให้ซื้อแค่ขวดพลาสติก มิฉะนั้น ซื้อขวดแก้ว (N-E)/(B-E) ขวด และเงินคงเหลือซื้อขวดพลาสติก

อินพุต

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

เอาต์พุต

Maximum litres of water: 3

คำอธิบาย − B-E=1 < A, N-E=3 ซื้อขวดแก้ว 3 ขวด (3 ลิตร)

อินพุต

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

เอาต์พุต

Maximum litres of water: 2

คำอธิบาย − B-E=7 > A ซื้อขวดพลาสติก 10/5 = 2 ขวด

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • ตัวแปร money, bottle, gbottle, gempty สำหรับราคาและเงิน
  • ฟังก์ชัน maxWater(int mny, int pb, int gb, int ge) พิมพ์ปริมาณน้ำ
  • litrs เก็บลิตรที่คำนวณได้
  • ส่ง pb เป็นต้นทุนขวดแก้วใหม่ (ราคาเดิม - คืน)
  • ถ้า gb < pb ซื้อขวดแก้ว (mny-ge)/gb ขวด ลบเงินที่ใช้ แล้วซื้อขวดพลาสติกเพิ่ม
  • ถ้า pb <= gb ซื้อแค่ขวดพลาสติก mny/pb
  • พิมพ์ผลลัพธ์ (1 ขวด = 1 ลิตร)

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

void maxWater(int mny, int pb, int gb, int ge) {
    int litrs;
    if (gb < pb) {
        int tmp = (mny - ge) / gb;
        litrs = tmp > 0 ? tmp : 0;
        mny -= litrs * gb;
        litrs += mny / pb;
        cout << "Maximum Liters of water: " << litrs << endl;
    } else {
        cout << "Maximum Liters of water only Plastic bottles: " << (mny / pb) << endl;
    }
}

int main() {
    int money = 20, pbottle = 5, gbottle = 10, gempty = 8;
    gbottle = gbottle - gempty; // ต้นทุนขวดแก้วใหม่
    maxWater(money, pbottle, gbottle, gempty);
    return 0;
}

ผลลัพธ์

Maximum Liters of water: 14