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 92Input : 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)
Please Login to comment...