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
입력
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