Phone Call
Description
Some phone usage rate may be described as follows:
- first minute of a call costs
min1
cents, - each minute from the 2nd up to 10th (inclusive) costs
min2_10
cents - each minute after 10th costs
min11
cents.
You have s
cents on your account before the call. What is the duration of the longest call (in minutes rounded down to the nearest integer) you can have?
Example
For min1 = 3
, min2_10 = 1
, min11 = 2
, and s = 20
, the output should be
phoneCall(min1, min2_10, min11, s) = 14
.
Here’s why:
- the first minute costs
3
cents, which leaves you with20 - 3 = 17
cents; - the total cost of minutes
2
through10
is1 * 9 = 9
, so you can talk9
more minutes and still have17 - 9 = 8
cents; - each next minute costs
2
cents, which means that you can talk8 / 2 = 4
more minutes.
Thus, the longest call you can make is 1 + 9 + 4 = 14
minutes long.
Input/Output
-
[execution time limit] 4 seconds (js)
-
[input] integer min1
Guaranteed constraints:
1 \leq min1 \leq 10
. -
[input] integer min2_10
Guaranteed constraints:
1 \leq min2_10 \leq 10
. -
[input] integer min11
Guaranteed constraints:
1 \leq min11 \leq 10
. -
[input] integer s
Guaranteed constraints:
2 \leq s\leqe 500
. -
[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
11
12
13
14
15
16
function phoneCall(min1, min2_10, min11, s) {
var t = 0;
if (s >= min1) {
s -= min1;
t += 1;
}
if (s >= min2_10) {
var m = Math.min(9, s / min2_10);
t += m;
s -= min2_10 * m;
}
if (s >= min11) {
t += s / min11;
}
return Math.floor(t);
}