using
System;
class
GFG{
static
int
[,,] dp =
new
int
[100, 10, 10];
static
int
countOfNumbers(
int
digit,
int
prev1,
int
prev2,
int
n)
{
if
(digit == n + 1) {
return
1;
}
int
val = dp[digit, prev1, prev2];
if
(val != -1) {
return
val;
}
val = 0;
if
(digit == 1) {
for
(
int
i = (n == 1 ? 0 : 1); i <= 9; ++i) {
val += countOfNumbers(
digit + 1, i, prev1, n);
}
}
else
if
(digit == 2) {
for
(
int
i = 0; i <= 9; ++i) {
val += countOfNumbers(
digit + 1, i, prev1, n);
}
}
else
{
int
mean = prev1;
int
current = (2 * mean) - prev2;
if
(current >= 0 && current <= 9)
val += countOfNumbers(digit + 1, current, prev1,
n);
if
((current + 1) >= 0 && (current + 1) <= 9)
val += countOfNumbers(digit + 1, current + 1,
prev1, n);
}
return
val;
}
static
public
void
Main ()
{
for
(
int
i = 0; i < 100; i++)
{
for
(
int
j = 0; j < 10; j++)
{
for
(
int
k = 0; k < 10; k++)
{
dp[i, j, k] = -1;
}
}
}
int
n = 2;
Console.Write(countOfNumbers(1, 0, 0, n));
}
}