Open In App

# Smallest number to be subtracted to convert given number to a palindrome

Given an integer N, the task is to find the smallest number to be subtracted from N to obtain a palindrome.

Examples:

Input: N = 1000
Output: 1
Explanation: Since 1000 – 1 = 999, which is a palindrome, the smallest number to be subtracted is 1.

Input: N = 3456
Output: 13
Explanation: Since 3456 – 13 = 3443, which is a palindrome, the smallest number to be subtracted is 13.

Approach: Follow the steps below to solve the problem:

1. Iterate from N to 0.
2. Initialize a counter. At each iteration reverse the reduced value of N and compare it to the current value of N. If both are equal, print the value of the counter.
3. Otherwise, increment the counter and continue the loop until N is 0.
4. Print the value of the counter.

Below is the implementation of the above approach:

## C++

 // C++ program for the above approach#include using namespace std; // Function to evaluate minimum// subtraction required to make// a number palindromevoid minSub(int N){     // Counts number of    // subtractions required    int count = 0;     // Run a loop till N>=0    while (N >= 0) {         // Store the current number        int num = N;         // Store reverse of current number        int rev = 0;         // Reverse the number        while (num != 0) {            int digit = num % 10;            rev = (rev * 10) + digit;            num = num / 10;        }         // Check if N is palindrome        if (N == rev) {             break;        }         // Increment the counter        count++;         // Reduce the number by 1        N--;    }     // Print the result    cout << count;} // Driver Codeint main(){    int N = 3456;     // Function call    minSub(N);    return 0;}

## Java

 // Java program for the// above approachimport java.util.*;class GFG{ // Function to evaluate minimum// subtraction required to make// a number palindromestatic void minSub(int N){  // Counts number of  // subtractions required  int count = 0;   // Run a loop till N>=0  while (N >= 0)  {    // Store the current    // number    int num = N;     // Store reverse of    // current number    int rev = 0;     // Reverse the number    while (num != 0)    {      int digit = num % 10;      rev = (rev * 10) + digit;      num = num / 10;    }     // Check if N is    // palindrome    if (N == rev)    {      break;    }     // Increment the counter    count++;     // Reduce the number    // by 1    N--;  }   // Print the result  System.out.print(count);} // Driver Codepublic static void main(String[] args){  int N = 3456;   // Function call  minSub(N);}} // This code is contributed by 29AjayKumar

## Python3

 # Python3 program for the above approach # Function to evaluate minimum# subtraction required to make# a number palindromedef minSub(N):         # Counts number of    # subtractions required    count = 0     # Run a loop till N>=0    while (N >= 0):                 # Store the current number        num = N         # Store reverse of current number        rev = 0         # Reverse the number        while (num != 0):            digit = num % 10            rev = (rev * 10) + digit            num = num // 10         # Check if N is palindrome        if (N == rev):            break         # Increment the counter        count += 1         # Reduce the number by 1        N -= 1     # Print the result    print(count) # Driver Codeif __name__ == '__main__':         N = 3456     # Function call    minSub(N) # This code is contributed by bgangwar59

## C#

 // C# program for the// above approachusing System; class GFG{ // Function to evaluate minimum// subtraction required to make// a number palindromestatic void minSub(int N){     // Counts number of  // subtractions required  int count = 0;   // Run a loop till N>=0  while (N >= 0)  {         // Store the current    // number    int num = N;     // Store reverse of    // current number    int rev = 0;     // Reverse the number    while (num != 0)    {      int digit = num % 10;      rev = (rev * 10) + digit;      num = num / 10;    }         // Check if N is    // palindrome    if (N == rev)    {      break;    }     // Increment the counter    count++;     // Reduce the number    // by 1    N--;  }   // Print the result  Console.Write(count);} // Driver Codepublic static void Main(String[] args){  int N = 3456;     // Function call  minSub(N);}} // This code is contributed by gauravrajput1

## Javascript



Output:

13

Time Complexity: O(N * K), Where K is the number of digits of the integer.
Auxiliary Space: O(1)