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 valuevoid 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 Codeint 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 valueclass GFG{ // Function to check if it// is possible to pay a valuestatic 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 Codepublic 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 valuedef 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 Codeif __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 valueusing System;class GFG{ // Function to check if it// is possible to pay a valuestatic 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 Codepublic 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 valuefunction 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 Codevar 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!
