Given a number, check whether it is a mystery number or not. A mystery number is a number that can be expressed as the sum of two numbers and those two numbers should be the reverse of each other.
Examples:
Input : n = 121
Output : 29 92
Input : n = 22
Output : 11 11
Source: Paytm Interview Set 23
The idea is to try every possible pair smaller than or equal to n.
Below is the implementation of the above approach.
C++
#include <bits/stdc++.h>
using namespace std;
int reverseNum( int x)
{
string s = to_string(x);
reverse(s.begin(), s.end());
stringstream ss(s);
int rev = 0;
ss >> rev;
return rev;
}
bool isMysteryNumber( int n)
{
for ( int i=1; i <= n/2; i++)
{
int j = reverseNum(i);
if (i + j == n)
{
cout << i << " " << j;
return true ;
}
}
cout << "Not a Mystery Number" ;
return false ;
}
int main()
{
int n = 121;
isMysteryNumber(n);
return 0;
}
|
Java
class GFG
{
static int reverseNum( int x)
{
String s = Integer.toString(x);
String str= "" ;
for ( int i=s.length()- 1 ;i>= 0 ;i--)
{
str=str+s.charAt(i);
}
int rev=Integer.parseInt(str);
return rev;
}
static boolean isMysteryNumber( int n)
{
for ( int i= 1 ; i <= n/ 2 ; i++)
{
int j = reverseNum(i);
if (i + j == n)
{
System.out.println( i + " " + j);
return true ;
}
}
System.out.println( "Not a Mystery Number" );
return false ;
}
public static void main(String []args)
{
int n = 121 ;
isMysteryNumber(n);
}
}
|
Python3
def reverseNum(x):
s = str (x)
s = s[:: - 1 ]
return int (s)
def isMysteryNumber(n):
for i in range ( 1 , n / / 2 + 1 ):
j = reverseNum(i)
if i + j = = n:
print (i, j)
return True
print ( "Not a Mystery Number" )
return False
n = 121
isMysteryNumber(n)
|
C#
using System;
class GFG
{
static int reverseNum( int x)
{
string s = x.ToString();
string str= "" ;
for ( int i=s.Length-1;i>=0;i--)
{
str=str+s[i];
}
int rev=Int32.Parse(str);
return rev;
}
static bool isMysteryNumber( int n)
{
for ( int i=1; i <= n/2; i++)
{
int j = reverseNum(i);
if (i + j == n)
{
Console.WriteLine( i + " " + j);
return true ;
}
}
Console.WriteLine( "Not a Mystery Number" );
return false ;
}
public static void Main()
{
int n = 121;
isMysteryNumber(n);
}
}
|
PHP
<?php
function reverseNum( $x )
{
$s = (string) $x ;
$s = strrev ( $s );
$rev = (int) $s ;
return $rev ;
}
function isMysteryNumber( $n )
{
for ( $i =1; $i <= $n /2; $i ++)
{
$j = reverseNum( $i );
if ( $i + $j == $n )
{
echo $i . " " . $j ;
return true;
}
}
echo "Not a Mystery Number" ;
return false;
}
$n = 121;
isMysteryNumber( $n );
return 0;
?>
|
Javascript
<script>
function reverseNum(x)
{
let s = x.toString();
let str= "" ;
for (let i=s.length-1;i>=0;i--)
{
str=str+s[i];
}
let rev=parseInt(str);
return rev;
}
function isMysteryNumber(n)
{
for (let i=1; i <= Math.floor(n/2); i++)
{
let j = reverseNum(i);
if (i + j == n)
{
document.write( i + " " + j+ "<br>" );
return true ;
}
}
document.write( "Not a Mystery Number<br>" );
return false ;
}
let n = 121;
isMysteryNumber(n);
</script>
|
Time Complexity: O(n)
Auxiliary Space: O(log10n)