Find out the minimum number of coins required to pay total amount - GeeksforGeeks

03 Mar, 2022
Given a total amount of N and unlimited number of coins worth 1,  10 and 25 currency coins. Find out the minimum number of coins you need to use to pay exactly amount N.Examples:  
Input : N = 14
Output : 5
You will use one coin of value 10 and 
four coins of value 1.

Input :  N = 88
Output : 7
 
Approach: There are three different cases:  
If value of N < 10, then coins that have value 1 can only be used for payment.When N > 9 and < 25, then coins that have value 1 and 10 will be used for payment. Here, to minimize the number of coins used, coins with value 10 will be preferred mostly.  When N > 24. Then all coins of value 1, 10 and 25 will be used for payment. To minimize the number of coins, the primary aim will be to use coin with value 25 first as much as possible then coin with value 10 and then with value 1.
If value of N < 10, then coins that have value 1 can only be used for payment.
When N > 9 and < 25, then coins that have value 1 and 10 will be used for payment. Here, to minimize the number of coins used, coins with value 10 will be preferred mostly.  
When N > 24. Then all coins of value 1, 10 and 25 will be used for payment. To minimize the number of coins, the primary aim will be to use coin with value 25 first as much as possible then coin with value 10 and then with value 1.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find the minimum number// of coins required #include <iostream>using namespace std; // Function to find the minimum number// of coins requiredint countCoins(int n){    int c = 0;     if (n < 10) {        // counts coins which have value 1        // we will need n coins of value 1        return n;    }    if (n > 9 && n < 25) {        // counts coins which have value 1 and 10        c = n / 10 + n % 10;        return c;    }    if (n > 24) {        // counts coins which have value 25        c = n / 25;         if (n % 25 < 10) {             // counts coins which have value 1 and 25            c = c + n % 25;            return c;        }         if (n % 25 > 9) {            // counts coins which have value 1, 10 and 25            c = c + (n % 25) / 10 + (n % 25) % 10;            return c;        }    }} // Driver Codeint main(){    int n = 14;     cout << countCoins(n);     return 0;}
// Java program to find the minimum number// of coins required class GFG {     // Function to find the minimum number    // of coins required    static int countCoins(int n)    {        int c = 0;        if (n < 10) {            // counts coins which have value 1            // we will need n coins of value 1            return n;        }        if (n > 9 && n < 25) {             // counts coins which have value 1 and 10            c = n / 10 + n % 10;             return c;        }        if (n > 24) {            // counts coins which have value 25            c = n / 25;             if (n % 25 < 10) {                // counts coins which have value 1 and 25                c = c + n % 25;                 return c;            }            if (n % 25 > 9) {                // counts coins which have value 1, 10 and 25                c = c + (n % 25) / 10 + (n % 25) % 10;                 return c;            }        }         return c;    }     // Driver Code    public static void main(String[] args)    {        int n = 14;        System.out.println(countCoins(n));    }}
# Python3 program to find the minimum number# of coins required # Function to find the minimum number# of coins requireddef countCoins(n):     c = 0     if (n < 10):                 # counts coins which have value 1        # we will need n coins of value 1        return n         if (n > 9 and n < 25):                 # counts coins which have value 1 and 10        c = n // 10 + n % 10        return c     if (n > 24):                 # counts coins which have value 25        c = n // 25         if (n % 25 < 10):             # counts coins which have value            # 1 and 25            c = c + n % 25            return c         if (n % 25 > 9):                         # counts coins which have value            # 1, 10 and 25            c = (c + (n % 25) // 10 +                     (n % 25) % 10)            return c # Driver Coden = 14 print(countCoins(n)) # This code is contributed by mohit kumar
// C# program to find the minimum number// of coins requiredusing System; class GFG{     // Function to find the minimum number    // of coins required    static int countCoins(int n)    {        int c = 0;        if (n < 10)        {            // counts coins which have value 1            // we will need n coins of value 1            return n;        }        if (n > 9 && n < 25)        {             // counts coins which have value 1 and 10            c = n / 10 + n % 10;             return c;        }        if (n > 24)        {            // counts coins which have value 25            c = n / 25;             if (n % 25 < 10)            {                // counts coins which have value 1 and 25                c = c + n % 25;                 return c;            }            if (n % 25 > 9)            {                // counts coins which have value 1, 10 and 25                c = c + (n % 25) / 10 + (n % 25) % 10;                 return c;            }        }         return c;    }     // Driver Code    public static void Main()    {        int n = 14;        Console.WriteLine(countCoins(n));    }} // This code is contributed by Ryuga
<?php// PHP program to find the minimum number// of coins required // Function to find the minimum number// of coins requiredfunction countCoins($n){    $c = 0;    if ($n < 10)    {        // counts coins which have value 1        // we will need n coins of value 1        return $n;    }         if ($n > 9 && $n < 25)    {         // counts coins which have value 1 and 10        $c = (int)($n / 10 + $n % 10);         return $c;    }         if ($n > 24)    {        // counts coins which have value 25        $c = (int)($n / 25);         if ($n % 25 < 10)        {                         // counts coins which have value 1 and 25            $c = $c + $n % 25;             return $c;        }        if ($n % 25 > 9)        {            // counts coins which have value 1, 10 and 25            $c = $c + ($n % 25) / 10 + ($n % 25) % 10;             return $c;        }    }     return $c;} // Driver Code$n = 14;echo(countCoins($n)); // This code is contributed Code_Mech
<script> // JavaScript program to find the minimum number// of coins required // Function to find the minimum number// of coins requiredfunction countCoins( n){    var c = 0;     if (n < 10)    {             // counts coins which have value 1        // we will need n coins of value 1        return n;    }    if (n > 9 && n < 25)    {             // counts coins which have value 1 and 10        c = n / 10 + n % 10;        return Math.trunc(c);    }    if (n > 24)    {             // counts coins which have value 25        c = n / 25;        if (n % 25 < 10)        {             // counts coins which have value 1 and 25            c = c + n % 25;            return Math.trunc(c);        }         if (n % 25 > 9)        {                     // counts coins which have value 1, 10 and 25            c = c + (n % 25) / 10 + (n % 25) % 10;            return Math.trunc(c);        }    }} var n = 14;document.write(countCoins(n)); // This code is contributed by akshitsaxenaa09.</script>
5
 
Time Complexity : O(1)Auxiliary Space : O(1)
ankthon
mohit kumar 29
Code_Mech
akshitsaxenaa09
simmytarika5
singhh3010
Constructive Algorithms
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Find all factors of a natural number | Set 1
Check if a number is Palindrome
Program to print prime numbers from 1 to N.
Fizz Buzz Implementation
Program to multiply two matrices
Program to add two binary strings
Find Union and Intersection of two unsorted arrays
Count ways to reach the n'th stair
Add two numbers without using arithmetic operators
Program to convert a given number to words