Given A coins of value N and B coins of value M, the task is to check if given coins can be used to pay a value of S.
Examples:
Input: A = 1, B = 2, N = 3, S = 4, M = 1
Output: YES
Explanation:
In this case if 1 coin of value 3 is chosen and 2 coins of value 1, then it is possible to pay a value of S.Input: A = 1, B = 2, N = 3, S = 6, M = 1
Output: NO
In this case, It is not possible to pay a value of S
Approach:
The idea is to use greedy approach.
- Keep subtracting coins with value N from the required sum S.
- At each step, while subtracting coins of value N, check if the remaining sum is a multiple of coins with value M and we have sufficient coins of value M to get this remaining sum.
- If at any step, the above two conditions are satisfied, return YES.
Below is the implementation of the above approach:
C++
// C++ implementation to check // if it is possible to pay a value #include <bits/stdc++.h> using namespace std; // Function to check if it // is possible to pay a value void knowPair( int a, int b, int n, int s, int m){ int i = 0, rem = 0; int count_b = 0, flag = 0; // Loop to add the value of coin A while (i <= a) { rem = s - (n * i); count_b = rem / m; if (rem % m == 0 && count_b <= b){ flag = 1; } i++; } // Condition to check if it is // possible to pay a value of S if (flag == 1) { cout << "YES" << endl; } else { cout << "NO" << endl; } } // Driver Code int main() { int A = 1; int B = 2; int n = 3; int S = 4; int m = 2; knowPair(A, B, n, S, m); return 0; } |
Java
// Java implementation to check // if it is possible to pay a value class GFG{ // Function to check if it // is possible to pay a value static void knowPair( int a, int b, int n, int s, int m){ int i = 0 , rem = 0 ; int count_b = 0 , flag = 0 ; // Loop to add the value of coin A while (i <= a) { rem = s - (n * i); count_b = rem / m; if (rem % m == 0 && count_b <= b){ flag = 1 ; } i++; } // Condition to check if it is // possible to pay a value of S if (flag == 1 ) { System.out.print( "YES" + "\n" ); } else { System.out.print( "NO" + "\n" ); } } // Driver Code public static void main(String[] args) { int A = 1 ; int B = 2 ; int n = 3 ; int S = 4 ; int m = 2 ; knowPair(A, B, n, S, m); } } // This code is contributed by 29AjayKumar |
Python3
# Python 3 implementation to check # if it is possible to pay a value # Function to check if it # is possible to pay a value def knowPair(a,b,n,s,m): i = 0 rem = 0 count_b = 0 flag = 0 # Loop to add the value of coin A while (i < = a): rem = s - (n * i) count_b = rem / / m if (rem % m = = 0 and count_b < = b): flag = 1 i + = 1 # Condition to check if it is # possible to pay a value of S if (flag = = 1 ): print ( "YES" ) else : print ( "NO" ) # Driver Code if __name__ = = '__main__' : A = 1 B = 2 n = 3 S = 4 m = 2 knowPair(A, B, n, S, m) # This code is contributed by Surendra_Gangwar |
C#
// C# implementation to check // if it is possible to pay a value using System; class GFG{ // Function to check if it // is possible to pay a value static void knowPair( int a, int b, int n, int s, int m){ int i = 0, rem = 0; int count_b = 0, flag = 0; // Loop to add the value of coin A while (i <= a) { rem = s - (n * i); count_b = rem / m; if (rem % m == 0 && count_b <= b){ flag = 1; } i++; } // Condition to check if it is // possible to pay a value of S if (flag == 1) { Console.Write( "YES" + "\n" ); } else { Console.Write( "NO" + "\n" ); } } // Driver Code public static void Main(String[] args) { int A = 1; int B = 2; int n = 3; int S = 4; int m = 2; knowPair(A, B, n, S, m); } } // This code is contributed by PrinciRaj1992 |
Javascript
<script> // Javascript implementation to check // if it is possible to pay a value // Function to check if it // is possible to pay a value function knowPair(a, b, n, s, m) { var i = 0, rem = 0; var count_b = 0, flag = 0; // Loop to add the value of coin A while (i <= a) { rem = s - (n * i); count_b = parseInt(rem / m); if (rem % m == 0 && count_b <= b) { flag = 1; } i++; } // Condition to check if it is // possible to pay a value of S if (flag == 1) { document.write( "YES" ); } else { document.write( "NO" ); } } // Driver Code var A = 1; var B = 2; var n = 3; var S = 4; var m = 2; knowPair(A, B, n, S, m); // This code is contributed by rutvik_56 </script> |
YES
Time Complexity: O(A)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!