There are numBottles water bottles that are initially full of water. You can exchange numExchange empty water bottles from the market with one full water bottle.

The operation of drinking a full water bottle turns it into an empty bottle.

Given the two integers numBottles and numExchange, return the maximum number of water bottles you can drink.

&nbsp;
Example 1:

Input: numBottles = 9, numExchange = 3
Output: 13
Explanation: You can exchange 3 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 9 + 3 + 1 = 13.


Example 2:

Input: numBottles = 15, numExchange = 4
Output: 19
Explanation: You can exchange 4 empty bottles to get 1 full water bottle. 
Number of water bottles you can drink: 15 + 3 + 1 = 19.


&nbsp;
Constraints:


	1 &lt;= numBottles &lt;= 100
	2 &lt;= numExchange &lt;= 100


class Solution:
    def numWaterBottles(self, a: int, b: int) -> int:
        
        def sol(a,b,e,res):
            if a!=0: res += a
            if (a+e)<b: return res 
            a += e
            new=a//b
            e = a-(new*b)
            a=new
            return sol(a,b,e,res)
        
        return sol(a,b,0,0)
class Solution {
    public int numWaterBottles(int numBottles, int numExchange) {
        int drinkedBottles = numBottles;
        int emptyBottles = numBottles;

        while(emptyBottles >= numExchange){
            int gainedBottles = emptyBottles / numExchange;

            drinkedBottles += gainedBottles;

            int unusedEmptyBottles = emptyBottles % numExchange;

            emptyBottles = gainedBottles + unusedEmptyBottles;
        }
        return drinkedBottles;
    }
}
class Solution {
public:
    int numWaterBottles(int numBottles, int numExchange) {
        int ex=0,remain=0,res=numBottles;
        while(numBottles>=numExchange){
             remain=numBottles%numExchange;
          numBottles=numBottles/numExchange;
           res+=numBottles;
            numBottles+=remain;
          cout<<numBottles<<" ";
        }
        return res;
    }
};
var numWaterBottles = function(numBottles, numExchange) {
    let count = 0;
    let emptyBottles = 0;
    while (numBottles > 0) {
        count += numBottles;
        emptyBottles += numBottles;
        numBottles = Math.floor(emptyBottles / numExchange);
        emptyBottles -= numBottles  * numExchange;
    }
    
    
    return count;
};
Water Bottles