# Check if a number is a Mystery Number

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

 ``

## Javascript

 ``

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!