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> |
Output:
YES
Time Complexity: O(A)
Auxiliary Space: O(1)
Recommended Articles