In this post, we will solve Halloween Sale HackerRank Solution. This problem (Halloween Sale) is a part of HackerRank Problem Solving series.
Task
You wish to buy video games from the famous online video game store Mist.
Usually, all games are sold at the same price, p dollars. However, they are planning to have the seasonal Halloween Sale next month in which you can buy games at a cheaper price. Specifically, the first game will cost p dollars, and every subsequent game will cost d dollars less than the previous one. This continues until the cost becomes less than or equal to m dollars, after which every game will cost m dollars. How many games can you buy during the Halloween Sale?
Example
p = 20
d = 3
m = 6
s = 70
The following are the costs of the first 11, in order:
20, 17, 14, 11, 8, 6, 6, 6, 6, 6, 6
Start at p = 20 units cost, reduce that by d = 3 units each iteration until reaching a minimum possible price, m = 6. Starting with s = 70 units of currency in your Mist wallet, you can buy 5 games: 20 + 17 + 14 + 11 + 8 = 70.
Function Description
Complete the howManyGames function in the editor below.
howManyGames has the following parameters:
- int p: the price of the first game
- int d: the discount from the previous game price
- int m: the minimum cost of a game
- int s: the starting budget
Input Format
The first and only line of input contains four space-separated integers p, d, m and s.
Constraints
- 1 <= m <= p <= 100
- 1 <= d <= 100
- 1 <= s <= 104
Sample Input 0
20 3 6 80
Sample Output 0
6
Explanation 0
Assumptions other than starting funds, s, match the example in the problem statement. With a budget of 80, you can buy 6 games at a cost of 20 + 17 + 14 + 11 + 8 + 6 = 76. A 7th game for an additional 6 units exceeds the budget.
Sample Input 1
20 3 6 85
Sample Output 1
7
Explanation 1
This is the same as the previous case, except this time the starting budget s = 85 units of currency. This time, you can buy 7 games since they cost 20 + 17 + 14 + 11 + 8 + 6 + 6 = 82. An additional game at 6 units will exceed the budget.
Solution – Halloween Sale – HackerRank Solution
C++
#include <bits/stdc++.h> using namespace std; int howManyGames(int p, int d, int m, int s) { int res = 0; while (p <= s) { res++; s -= p; p = max(m, p - d); } return res; } int main() { int p; int d; int m; int s; cin >> p >> d >> m >> s; int answer = howManyGames(p, d, m, s); cout << answer << endl; return 0; }
Python
import math import os import random import re import sys def how_many_games(p, d, m, s): res = 0 while s > 0: res += 1 s -= p p = max(p - d, m) if s != 0: res -= 1 return res if __name__ == '__main__': fptr = open(os.environ['OUTPUT_PATH'], 'w') p, d, m, s = [int(n) for n in input().split(" ")] answer = how_many_games(p, d, m, s) fptr.write(str(answer) + '\n') fptr.close()
Java
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int howManyGames(int p, int d, int m, int s) { int count = 0; int nextPrice = p; while(s >= nextPrice) { count++; s -= nextPrice; nextPrice = Math.max(nextPrice-d, m); } return count; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int p = in.nextInt(); int d = in.nextInt(); int m = in.nextInt(); int s = in.nextInt(); int answer = howManyGames(p, d, m, s); System.out.println(answer); in.close(); } }
Note: This problem (Halloween Sale) is generated by HackerRank but the solutions is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.