Skip to content
Related Articles

Related Articles

Improve Article
Check if a number is a Mystery Number
  • Difficulty Level : Medium
  • Last Updated : 25 May, 2021

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

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :