Candles
Description
When a candle finishes burning it leaves a leftover. makeNew
leftovers can be combined to make a new candle, which, when burning down, will in turn leave another leftover.
You have candlesNumber
candles in your possession. What’s the total number of candles you can burn, assuming that you create new candles as soon as you have enough leftovers?
Example
For candlesNumber = 5
and makeNew = 2
, the output should be
candles(candlesNumber, makeNew) = 9
.
Here is what you can do to burn 9 candles:
- burn
5
candles, obtain5
leftovers; - create
2
more candles, using4
leftovers (1
leftover remains); - burn
2
candles, end up with3
leftovers; - create another candle using
2
leftovers (1
leftover remains); - burn the created candle, which gives another leftover (
2
leftovers in total); - create a candle from the remaining leftovers;
- burn the last candle.
Thus, you can burn 5 + 2 + 1 + 1 = 9
candles, which is the answer.
Input/Output
-
[execution time limit] 4 seconds (js)
-
[input] integer candlesNumber
The number of candles you have in your possession.
Guaranteed constraints:
1 \leq candlesNumber \leq 15
. -
[input] integer makeNew
The number of leftovers that you can use up to create a new candle.
Guaranteed constraints:
2 \leq makeNew \leq 5
. -
[output] integer
[JavaScript (ES6)] Syntax Tips
1
2
3
4
5
6
// Prints help message to the console
// Returns a string
function helloWorld(name) {
console.log("This prints to the console when you Run Tests");
return "Hello, " + name;
}
Solution
1
2
3
4
5
6
7
8
9
10
function candles(candlesNumber, makeNew) {
var burn = 0;
while (candlesNumber >= makeNew) {
var v = Math.floor(candlesNumber / makeNew);
burn += v * makeNew;
candlesNumber = v + (candlesNumber % makeNew);
}
burn += candlesNumber;
return burn;
}