Open In App
Related Articles

Check if a number is a Mystery Number

Improve Article
Improve
Save Article
Save
Like Article
Like

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++




// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Finds reverse of given num x.
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++)
    {
        // if found print the  pair, return
        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




// Java implementation of above approach
 
class GFG
{
    // Finds reverse of given num x.
    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++)
        {
            // if found print the pair, return
            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);
     
    }
 
}
 
// This code is contributed by ihritik


Python3




# Python3 implementation of above approach
 
# Finds reverse of given num x.
def reverseNum(x):
    s = str(x)
    s = s[::-1]
    return int(s)
     
def isMysteryNumber(n):
     
    for i in range(1, n // 2 + 1):
         
        # if found print the pair, return
        j = reverseNum(i)
         
        if i + j == n:
            print(i, j)
            return True
     
    print("Not a Mystery Number")
    return False
 
# Driver Code
n = 121
isMysteryNumber(n)
 
# This code is contributed by
# Mohit Kumar 29 (IIIT gwalior)


C#




// C# implementation of above approach
 
using System;
class GFG
{
    // Finds reverse of given num x.
    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++)
        {
            // if found print the pair, return
            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);
     
    }
 
}
 
// This code is contributed by ihritik


PHP




<?php
// PHP implementation of above approach
  
// Finds reverse of given num x.
function reverseNum($x)
{
    $s = (string)$x;
    $s = strrev($s);
    $rev = (int)$s;
    return $rev;
}
  
function isMysteryNumber($n)
{
    for ($i=1; $i <= $n/2; $i++)
    {
        // if found print the  pair, return
        $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;
// This code is contributed by Ita_c.
?>


Javascript




<script>
// Javascript implementation of above approach
     
    // Finds reverse of given num x.
    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++)
        {
            // if found print the pair, return
            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);
     
       
 
 
// This code is contributed by avanitrachhadiya2155
</script>


Output: 

29 92

 

Time Complexity: O(n)

Auxiliary Space: O(log10n)


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 28 Mar, 2023
Like Article
Save Article
Similar Reads
Related Tutorials