# Halloween Sale – HackerRank Solution

In this post, we will solve Halloween Sale HackerRank Solution. This problem (Halloween Sale) is a part of HackerRank Problem Solving series.

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 pdm 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);
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.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);
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.