Minimum possible number with the given operation

• Last Updated : 08 Jun, 2021

Given a positive integer N, the task is to convert this integer to the minimum possible integer without leading zeroes by changing the digits. A digit X can only be changed into a digit Y if X + Y = 9.
Examples:

Input: N = 589
Output: 410
Change 5 -> 4, 8 -> 1 and 9 -> 0
Input: N = 934
Output: 934
934 cannot be minimised.

Approach: Only the digits which are greater than or equal to 5 need to be changed as changing the digits which are less than 5 will result in a larger number. After all the required digits have been updated, check whether the resultant number has a leading zero, if yes then change it to a 9.
Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to return the minimum possible// integer that can be obtained from the// given integer after performing// the given operationsstring minInt(string str){    // For every digit    for (int i = 0; i < str.length(); i++) {         // Digits less than 5 need not to be        // changed as changing them will        // lead to a larger number        if (str[i] >= '5') {            str[i] = ('9' - str[i]) + '0';        }    }     // The resulting integer    // cannot have leading zero    if (str == '0')        str = '9';     return str;} // Driver codeint main(){    string str = "589";     cout << minInt(str);     return 0;}

Java

 // Java implementation of the approach // Function to return the minimum possible// integer that can be obtained from the// given integer after performing// the given operations import java.util.*; class GFG{ static String minInt(String str){    // For every digit    String s = "";    for (int i = 0; i < str.length(); i++)    {         // Digits less than 5 need not to be        // changed as changing them will        // lead to a larger number        if (str.charAt(i) >= '5')        {            s += (char)(('9' - str.charAt(i)) + '0');        }        else        {            s += str.charAt(i);        }             }     // The resulting integer    // cannot have leading zero    if (str.charAt(0) == '0')        s += '9';     return s;} // Driver codepublic static void main(String []args){    String str = "589";     System.out.println(minInt(str));}} // This code is contributed by Surendra_Gangwar

Python3

 # Python3 implementation of the approach  # Function to return the minimum possible# integer that can be obtained from the# given integer after performing# the given operationsdef minInt(str1):         # For every digit    for i in range(len(str1)):         # Digits less than 5 need not to be        # changed as changing them will        # lead to a larger number        if (str1[i] >= 5):            str1[i] = (9 - str1[i])     # The resulting integer    # cannot have leading zero    if (str1 == 0):        str1 = 9             temp = ""     for i in str1:        temp += str(i)     return temp # Driver codestr1 = "589"str1 = [int(i) for i in str1] print(minInt(str1)) # This code is contributed by Mohit Kumar

C#

 // C# implementation of the above approachusing System; class GFG{         // Function to return the minimum possible    // integer that can be obtained from the    // given integer after performing    // the given operations    static string minInt(char []str)    {        // For every digit        for (int i = 0; i < str.Length; i++)        {                 // Digits less than 5 need not to be            // changed as changing them will            // lead to a larger number            if ((int)str[i] >= (int)('5'))            {                str[i] = (char)(((int)('9') -                                 (int)(str[i])) +                                 (int)('0'));            }        }             // The resulting integer        // cannot have leading zero        if (str == '0')            str = '9';             string s = new string(str);        return s;    }         // Driver code    static public void Main ()    {        string str = "589";        Console.WriteLine(minInt(str.ToCharArray()));    }} // This code is contributed by AnkitRai01

Javascript


Output:
410

My Personal Notes arrow_drop_up