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.

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

Leave a Comment

Your email address will not be published. Required fields are marked *