Open in App
Not now

# Check if a number is a Mystery Number

• Difficulty Level : Easy
• Last Updated : 28 Mar, 2023

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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)

My Personal Notes arrow_drop_up
Related Articles