Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 N 루피로 구입할 수 있는 최대 물 리터

<시간/>

N 루피가 주어집니다. 목표는 물병의 가격이 다음과 같은 돈으로 가능한 최대의 물을 사는 것입니다 -

  • 플라스틱 병:1리터당 1루피
  • 유리병:1리터에 B 루피
  • 유리병:1리터에 B 루피

이제 유리병의 원래 비용은 B-E 루피가 됩니다. 돌아온 후.

플라스틱 병의 비용이 여전히 B-E보다 낮으면 플라스틱 병만 구입하십시오. 그렇지 않으면 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개의 플라스틱 병을 구입할 수 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수 money, bottle, 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