Related Articles

# Count the number of currency notes needed

• Last Updated : 04 May, 2021

You have an unlimited amount of banknotes worth A and B dollars (A not equals to B). You want to pay a total of S dollars using exactly N notes. The task is to find the number of notes worth A dollars you need. If there is no solution return -1.

Examples:

Input: A = 1, B = 2, S = 7, N = 5
Output:
3 * A + 2 * B = S
3 * 1 + 2 * 2 = 7

Input: A = 2, B = 1, S = 7, N = 5
Output: 2

Input: A = 2, B = 1, S = 4, N = 5
Output: -1

Input: A = 2, B = 3, S = 20, N = 8
Output:

Approach: Let x be the number of notes of value A required then the rest of the notes i.e. N – x must of value B. Since, their sum is required be S then the following equation must be satisfied:

S = (A * x) + (B * (N – x))
Solving the equation further,
S = (A * x) + (B * N) – (B * x)
S – (B * N) = (A – B) * x
x = (S – (B * N)) / (A – B)
After solving for x, it is the number of notes of value A required
only if the value of x is an integer else the result is not possible.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include``using` `namespace` `std;` `// Function to return the amount of notes``// with value A required``int` `bankNotes(``int` `A, ``int` `B, ``int` `S, ``int` `N)``{``    ``int` `numerator = S - (B * N);``    ``int` `denominator = A - B;` `    ``// If possible``    ``if` `(numerator % denominator == 0)``        ``return` `(numerator / denominator);``    ``return` `-1;``}` `// Driver code``int` `main()``{``    ``int` `A = 1, B = 2, S = 7, N = 5;``    ``cout << bankNotes(A, B, S, N) << endl;``}``    ` `// This code is contributed by mits`

## Java

 `// Java implementation of the approach``class` `GFG {` `    ``// Function to return the amount of notes``    ``// with value A required``    ``static` `int` `bankNotes(``int` `A, ``int` `B, ``int` `S, ``int` `N)``    ``{``        ``int` `numerator = S - (B * N);``        ``int` `denominator = A - B;` `        ``// If possible``        ``if` `(numerator % denominator == ``0``)``            ``return` `(numerator / denominator);``        ``return` `-``1``;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `A = ``1``, B = ``2``, S = ``7``, N = ``5``;``        ``System.out.print(bankNotes(A, B, S, N));``    ``}``}`

## Python3

 `# Python3 implementation of the approach` `# Function to return the amount of notes``# with value A required``def` `bankNotes(A, B, S, N):` `    ``numerator ``=` `S ``-` `(B ``*` `N)``    ``denominator ``=` `A ``-` `B` `    ``# If possible``    ``if` `(numerator ``%` `denominator ``=``=` `0``):``        ``return` `(numerator ``/``/` `denominator)``    ``return` `-``1` `# Driver code``A, B, S, N ``=` `1``, ``2``, ``7``, ``5``print``(bankNotes(A, B, S, N))` `# This code is contributed``# by mohit kumar`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `    ``// Function to return the amount of notes``    ``// with value A required``    ``static` `int` `bankNotes(``int` `A, ``int` `B,``                         ``int` `S, ``int` `N)``    ``{``        ``int` `numerator = S - (B * N);``        ``int` `denominator = A - B;` `        ``// If possible``        ``if` `(numerator % denominator == 0)``            ``return` `(numerator / denominator);``        ``return` `-1;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `A = 1, B = 2, S = 7, N = 5;``        ``Console.Write(bankNotes(A, B, S, N));``    ``}``}` `// This code is contributed by Akanksha Rai`

## PHP

 ``

## Javascript

 ``
Output:
`3`

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students

My Personal Notes arrow_drop_up