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! All those who say programming isn’t for kids, just haven’t met the right mentors yet. Join the  Demo Class for First Step to Coding Coursespecifically designed for students of class 8 to 12.

The students will get to learn more about the world of programming in these free classes which will definitely help them in making a wise career choice in the future.

My Personal Notes arrow_drop_up