The expectation is to find the total number of choclate one can consume by taking full advantage of the offer, Here there are 3 inputs n which holds the value of initial amount of money for buying choclate, c is the cost price of each candy if paid by cash and m is the exchange rate for the candy.
Inputs
- n Initial cash to buy candy.
- c Coast of each candy if paid by cas.h
- m Exchange rate for a new candy in offer.
The initial count of choclate will be the cash / coast and the wrappers in hand will be the same value of choclate, and from there we loop through until the wrap count is less than the exchange rate, inside the loop the choclate count will still hold the same fourmula as before but divided with exchange rate. The wrap count is the tricky part... the wrap will be wrap/ exchange rate(the no. choclate) + the remainder of this division(THIS IS VERY IMPORTANT) because for example if the count of wrapper is 3 and the exchange rate is 2 you can only buy 1 choclate but the remainder 1 will not be included and will pop errors in the test cases.
Algorithm
- declare 2 new variables choclate and wrappers.
- Initilize the choclate to n/m.
- Initilize the wrapper to choclate.
- Run a while loop until the wraper &ls;= exchange rate(or m)
- Add the value of choclate to wrapper/exchange rate(or m)
- Set the value of wrapper to the number of choclates exchanged and the balance un-used wrapper.
- return the count of choclates consumed.
I Highly recommend you dont go through the below code now but try to solve it in your own to get the ability to solve problems but im just pasting it here for those who hasn't manged to find the solution despite many trys
public static int chocolateFeast(int n, int c, int m) {
int cho = n / c, wrap = cho;
while (wrap >= m) {
cho += wrap / m;
wrap = wrap / m + wrap % m;
}
return cho;
}
Comments
Post a Comment