Check if A and B can be reduced to 0 by decrementing with x and y with absolute difference at most K
Given three integers A, B, and K. The task is to check whether A and B can be reduced to zero by decrementing x and y from A and B respectively such that abs(x – y) ≤ K.
Example:
Input: A = 2, B = 7, K = 3
Output: YES
Explanation: Decrement values in the following way:
- Decrement 1 from A and 4 from B such that abs(1 – 4) ≤ 3, therefore, current value of A = 1 and B = 3.
- Decrement 1 from A and 3 from B such that abs(1 – 3) ≤ 3, current value of A = 0 and B = 0.
So, it is possible to reduce both the numbers to 0.
Input: A = 9, B = 8, K = 0
Output: NO
Approach: The task can be solved with a simple observation. The idea is to find the minimum and maximum out of A and B. If the minimum number multiplied by (1+K) is less than the maximum, then it is not possible to convert A and B to zero, else they can be converted to zero.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool isPossibleToReduce( int A, int B, int k)
{
int mn = min(A, B);
int mx = max(A, B);
if (mn * (1 + k) < mx) {
return false ;
}
return true ;
}
int main()
{
int A = 2, B = 7;
int K = 3;
if (isPossibleToReduce(A, B, K))
cout << "YES" ;
else
cout << "NO" ;
return 0;
}
|
Java
import java.io.*;
import java.util.*;
class GFG {
static boolean isPossibleToReduce( int A, int B, int k)
{
int mn = Math.min(A, B);
int mx = Math.max(A, B);
if (mn * ( 1 + k) < mx) {
return false ;
}
return true ;
}
public static void main(String[] args)
{
int A = 2 , B = 7 ;
int K = 3 ;
if (isPossibleToReduce(A, B, K))
System.out.println( "YES" );
else
System.out.println( "NO" );
}
}
|
Python3
def isPossibleToReduce(A, B, k):
mn = min (A, B)
mx = max (A, B)
if (mn * ( 1 + k) < mx):
return False
return True
if __name__ = = "__main__" :
A = 2
B = 7
K = 3
if (isPossibleToReduce(A, B, K)):
print ( "YES" )
else :
print ( "NO" )
|
C#
using System;
public class GFG {
/// Function to check if it is possible
static bool isPossibleToReduce( int A, int B, int k)
{
int mn = Math.Min(A, B);
int mx = Math.Max(A, B);
if (mn * (1 + k) < mx) {
return false ;
}
return true ;
}
public static void Main( string [] args)
{
int A = 2, B = 7;
int K = 3;
if (isPossibleToReduce(A, B, K))
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
Javascript
<script>
function isPossibleToReduce(A, B, k)
{
let mn = Math.min(A, B);
let mx = Math.max(A, B);
if (mn * (1 + k) < mx) {
return false ;
}
return true ;
}
let A = 2,
B = 7;
let K = 3;
if (isPossibleToReduce(A, B, K)) document.write( "YES" );
else document.write( "NO" );
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
27 Oct, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...