给定一个正整数N,任务是要计算所有可能的N-位数字,使得A +反向(A)= 10 N – 1其中A是N位数字和反向(A)是反向A. A的不应该有任何前导0。
例子:
Input: N = 2
Output: 9
All possible 2 digit numbers are 90, 81, 72, 63, 54, 45, 36, 27 and 18.
Input: N = 4
Output: 90
方法:首先我们必须得出结论,如果N为奇数,则没有数字可以满足给定条件,让我们针对N = 3进行证明。
,
so and .
which is impossible as it is a floating point number.
现在找到N偶数时的答案。例如N = 4
and now if x + y = 9 then the number of pairs which satisfy this condition are 10.
(0, 9), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)
Now, 1st and Nth digit cannot have the pair (0, 9) as there shouldn’t be any leading 0s in Abut for all the remaining N/2-1 pairs there can be 10 pairs.
So the answer is , As N is large so we will print 9 followed by N/2-1 number of 0s.
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
using namespace std;
// Function to return the count of required numbers
string getCount(int N)
{
// If N is odd then return 0
if (N % 2 == 1)
return 0;
string result = "9";
for (int i = 1; i <= N / 2 - 1; i++)
result += "0";
return result;
}
// Driver Code
int main()
{
int N = 4;
cout << getCount(N);
return 0;
}
Java
// Java implementation of above approach
class GFG
{
// Function to return the count of required numbers
static String getCount(int N)
{
// If N is odd then return 0
if (N % 2 == 1)
return "0";
String result = "9";
for (int i = 1; i <= N / 2 - 1; i++)
result += "0";
return result;
}
// Driver Code
public static void main(String []args)
{
int N = 4;
System.out.println(getCount(N));
}
}
// This code is contributed by ihritik
Python3
# Python3 implementation of above approach
# Function to return the count of required numbers
def getCount(N):
# If N is odd then return 0
if (N % 2 == 1):
return "0"
result = "9"
for i in range (1, N // 2 ):
result = result + "0"
return result
# Driver Code
N = 4
print(getCount(N))
# This code is contributed by ihritik
C#
// C# implementation of above approach
using System;
class GFG
{
// Function to return the count of required numbers
static string getCount(int N)
{
// If N is odd then return 0
if (N % 2 == 1)
return "0";
string result = "9";
for (int i = 1; i <= N / 2 - 1; i++)
result += "0";
return result;
}
// Driver Code
public static void Main()
{
int N = 4;
Console.WriteLine(getCount(N));
}
}
// This code is contributed by ihritik
PHP
90
时间复杂度: O(N)