Given two integers A and B. The task is to find the nearest greater value to B by interchanging the digits of A. If no such permutataion possible then print -1.
Input: A = 459, B = 500
549 is the nearest greater.
Input: A = 321, B = 567
Input: A = 231, B = 125
Prerequisites: All permutations of a string
- Set the minimum value of min1 by using the Integer.MAX_VALUE
- Interchange the digit of A by using above mentioned permutation method.
- Check if the permutataion of A is less than min1 or not. If less then update min1 as A.
- Repeat this for all permutataions of A and find the minimum greater value
Below is the implementation of the above approach :
# Python3 program to find nearest greater value
min1 = 10**9
_count = 0
# Find all the possible permutation of Value A.
def permutation(str1, i, n, p):
global min1, _count
if (i == n):
# Convert into Integer
str1 = “”.join(str1)
q = int(str1)
# Find the minimum value of A
# by interchanging the digits
# of A and store min1.
if (q – p > 0 and q < min1): min1 = q _count = 1 else: for j in range(i, n + 1): # Swap two character) str1[i], str1[j] = str1[j], str1[i] permutation(str1, i + 1, n, p) str1[i], str1[j] = str1[j], str1[i] return min1 # Driver code A = 213 B = 111 # Convert integer value into to # find all the permutation of the number str2 = str(A) str1 = [i for i in str2] le = len(str1) h = permutation(str1, 0, le - 1, B) # count=1 means number greater than B exists if _count == 1: print(h) else: print(-1) # This code is contributed by # mohit [tabby title="C#"]
- Largest number not greater than N all the digits of which are odd
- Next greater Number than N with the same quantity of digits A and B
- Find next greater number with same set of digits
- Next greater number on the basis of precedence of digits
- Largest number not greater than N which can become prime after rearranging its digits
- Count numbers in given range such that sum of even digits is greater than sum of odd digits
- Nearest prime less than given number n
- Round the given number to nearest multiple of 10
- Round the given number to nearest multiple of 10 | Set-2
- Count of integers in a range which have even number of odd digits and odd number of even digits
- Check whether product of digits at even places is divisible by sum of digits at odd place of a number
- Maximize the given number by replacing a segment of digits with the alternate digits given
- Count of numbers between range having only non-zero digits whose sum of digits is N and number is divisible by M
- Find the Largest number with given number of digits and sum of digits
- Find smallest number with given number of digits and sum of digits
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.