给定一个数字,检查它是否是一个神秘数字。一个神秘数字是可以表示为两个数字之和的数字,而这两个数字应彼此相反。
例子:
Input : n = 121
Output : 29 92
Input : n = 22
Output : 11 11
来源:Paytm访谈集23
这个想法是尝试每一个小于或等于n的可能对。
下面是上述方法的实现。
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
输出:
29 92