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

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


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

  • ขวดพลาสติก:รูปีต่อ 1 ลิตร
  • ขวดแก้ว:รูปี B สำหรับ 1 ลิตร
  • ขวดแก้ว:รูปี B สำหรับ 1 ลิตร

ตอนนี้ต้นทุนดั้งเดิมของขวดแก้วกลายเป็นรูปี พ.ศ. หลังจากกลับมา

หากราคาขวดพลาสติกยังน้อยกว่า พ.ศ. ให้ซื้อเฉพาะขวดพลาสติก หรือซื้อขวด N-E/B-Eglass และพักผ่อนในขวดพลาสติก

อินพุต

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

ผลลัพธ์

Maximum litres of water: 3

คำอธิบาย − B-E=1, 1

อินพุต

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

ผลลัพธ์

Maximum litres of water: 2

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

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

  • เงินจำนวนเต็ม ขวด gbottle และ gempty ใช้สำหรับอัตราและจำนวนเงินที่เรามี

  • ฟังก์ชัน maxWater(int mny,int pb,int gb,int ge) รับค่าทั้งหมดเป็นพารามิเตอร์และพิมพ์ปริมาณน้ำที่สามารถซื้อได้

  • ลิตรที่ปรับเปลี่ยนได้ใช้สำหรับเก็บปริมาณน้ำที่คำนวณได้เป็นลิตร

  • เราส่งต่อ pb เป็นค่าใหม่ของขวดแก้ว(ค่าเดิม-ค่าคืน)

  • หากค่า gb ที่ส่งผ่านน้อยกว่าค่า pb ให้ซื้อขวดแก้ว (mny-ge)/gb

  • ลบจำนวนนี้เพื่อคำนวณเงินที่เหลือ mny-=ltrs*gb

  • ตอนนี้ขวดพลาสติกที่ซื้อได้คือ mny/pb

  • หากค่า pb ที่ส่งผ่านมากกว่าค่า pb ให้ซื้อขวดพลาสติก mny/pb เท่านั้น

  • พิมพ์ผลทั้งสองกรณีเป็นหมายเลข ของขวดคือไม่มี ลิตรน้ำ แต่ละขวดมีความจุ 1 ลิตร

ตัวอย่าง

// 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;
   // if buying glass bottles is profitable
   if (gb < pb){
      // no. of glass bottles
      int tmp=mny-ge/gb;
      litrs=tmp>0?tmp:0;
      mny-=litrs*gb;
      // no. of plastic bottles
      litrs+=mny/pb;
      cout<<"Maximum Liters of water : "<<litrs<<endl;
   }
   // only plastic bottles
   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; //new cost of glass botlles
   maxWater( money,pbottle,gbottle,gempty );
}

ผลลัพธ์

Maximum Liters of water: 14