QUESTION:
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.
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.
Constraints:
1 <= numBottles <= 100
2 <= numExchange <= 100
EXPLANATION:
easy的题目, 其实就和十进制, 二进制的切换相同.
SOLUTION:
class Solution {
fun numWaterBottles(numBottles: Int, numExchange: Int): Int {
var result = 0
var bottles = numBottles
var carry = 0
while (bottles + carry >= numExchange) {
result += bottles
var tmp = bottles
bottles = (tmp + carry) / numExchange
carry = (tmp + carry) % numExchange
}
return result + bottles
}
}