Given an integer X, the task is to count the total number of three-digit numbers having difference X with its reverse. If no such number exists, then print -1.
Examples:
Input: X = 792
Output : 10
Explanation :
901 – 109 = 792
911 – 119 = 792
921 – 129 = 792
931 – 139 = 792
941 – 149 = 792
951 – 159 = 792
961 – 169 = 792
971 – 179 = 792
981 – 189 = 792
991 – 199 = 792Input: X = 0
Output: 90
Approach: The given problem can be solved based on the following observations:
Let N = rpq
Therefore, N = 100r + 10q + p
Therefore, reverse of N = 100p + 10q + r
Therefore, the problem reduces to solving (100r + 10q + p) – (r + 10q + 100p) = X
-> 99(r – p) = X
-> r – p = X / 99
Therefore, if given X is a multiple of 99, then solution exists.
Follow the steps below to solve the problem based on the above observations:
- Check if X is multiple of 99 or not. If not found to be true, print -1 as no solution exists.
- Otherwise, calculate X / 99. Generate all pairs using digits [1, 9] and for each pair, check if their difference is equal to X / 99 or not.
- If found to be true for any pair, increase count by 10, as the middle digit can be permuted to place any value from the range [0, 9] for the obtained pair.
- Finally, print the value of the count obtained.
Below is the implementation of the above approach:
// C++ Program to implement // the above approach #include <bits/stdc++.h> using namespace std;
// Function to count three-digit // numbers having difference x // with its reverse int Count_Number( int x)
{ int ans = 0;
// if x is not multiple of 99
if (x % 99 != 0) {
// No solution exists
ans = -1;
}
else {
int diff = x / 99;
// Generate all possible pairs
// of digits [1, 9]
for ( int i = 1; i < 10; i++) {
for ( int j = 1; j < 10; j++) {
// If any pair is obtained
// with difference x / 99
if ((i - j) == diff) {
// Increase count
ans += 10;
}
}
}
}
// Return the count
return ans;
} // Driver Code int main()
{ int x = 792;
cout << Count_Number(x) << endl;
return 0;
} |
// Java program to implement // the above approach import java.io.*;
import java.util.Arrays;
class GFG{
// Function to count three-digit // numbers having difference x // with its reverse static int Count_Number( int x)
{ int ans = 0 ;
// If x is not multiple of 99
if (x % 99 != 0 )
{
// No solution exists
ans = - 1 ;
}
else
{
int diff = x / 99 ;
// Generate all possible pairs
// of digits [1, 9]
for ( int i = 1 ; i < 10 ; i++)
{
for ( int j = 1 ; j < 10 ; j++)
{
// If any pair is obtained
// with difference x / 99
if ((i - j) == diff)
{
// Increase count
ans += 10 ;
}
}
}
}
// Return the count
return ans;
} // Driver Code public static void main (String[] args)
{ int x = 792 ;
System.out.println(Count_Number(x));
} } // This code is contributed by sanjoy_62 |
# Python3 program to implement # the above approach # Function to count three-digit # numbers having difference x # with its reverse def Count_Number(x):
ans = 0 ;
# If x is not multiple
# of 99
if (x % 99 ! = 0 ):
# No solution exists
ans = - 1 ;
else :
diff = x / 99 ;
# Generate all possible pairs
# of digits [1, 9]
for i in range ( 1 , 10 ):
for j in range ( 1 , 10 ):
# If any pair is obtained
# with difference x / 99
if ((i - j) = = diff):
# Increase count
ans + = 10 ;
# Return the count
return ans;
# Driver Code if __name__ = = '__main__' :
x = 792 ;
print (Count_Number(x));
# This code is contributed by shikhasingrajput |
// C# program to implement // the above approach using System;
class GFG{
// Function to count three-digit // numbers having difference x // with its reverse static int Count_Number( int x)
{ int ans = 0;
// If x is not multiple of 99
if (x % 99 != 0)
{
// No solution exists
ans = -1;
}
else
{
int diff = x / 99;
// Generate all possible pairs
// of digits [1, 9]
for ( int i = 1; i < 10; i++)
{
for ( int j = 1; j < 10; j++)
{
// If any pair is obtained
// with difference x / 99
if ((i - j) == diff)
{
// Increase count
ans += 10;
}
}
}
}
// Return the count
return ans;
} // Driver Code public static void Main()
{ int x = 792;
Console.WriteLine(Count_Number(x));
} } // This code is contributed by code_hunt |
<script> // Javascript program to implement // the above approach // Function to count three-digit // numbers having difference x // with its reverse function Count_Number(x)
{ let ans = 0;
// If x is not multiple of 99
if (x % 99 != 0)
{
// No solution exists
ans = -1;
}
else
{
let diff = x / 99;
// Generate all possible pairs
// of digits [1, 9]
for (let i = 1; i < 10; i++)
{
for (let j = 1; j < 10; j++)
{
// If any pair is obtained
// with difference x / 99
if ((i - j) == diff)
{
// Increase count
ans += 10;
}
}
}
}
// Return the count
return ans;
} // Driver code let x = 792; document.write(Count_Number(x)); // This code is contributed by splevel62 </script> |
10
Time Complexity: O(1)
Auxiliary Space: O(1)