Admissible Paths Through a Grid

Let’s call a lattice point $(x, y)$ inadmissible if $x, y$ and $x+y$ are all positive perfect squares.
For example, $(9, 16)$ is inadmissible, while $(0, 4)$, $(3, 1)$ and $(9, 4)$ are not.
Consider a path from point $(x_1, y_1)$ to point $(x_2, y_2)$ using only unit steps north or east.
Let’s call such a path admissible if none of its intermediate points are inadmissible.
Let $P(n)$ be the number of admissible paths from $(0, 0)$ to $(n, n)$.
It can be verified that $P(5) = 252$, $P(16) = 596994440$ and $P(1000) \bmod 1\,000\,000\,007 = 341920854$.
Find $P(10\,000\,000) \bmod 1\,000\,000\,007$.

To solve this problem, we can use dynamic programming to compute the value of $P(n)$. We will create a 2D grid to keep track of the number of admissible paths from $(0,0)$ to each point $(x,y)$.

Here is the Python code to calculate $P(n)$:
“`python
def count_admissible_paths(n):
# Initialize the grid with zeros
grid = [[0] * (n+1) for _ in range(n+1)]

# Set the base cases
grid[0][0] = 1

# Fill in the grid using dynamic programming
for x in range(n+1):
for y in range(n+1):
# Check if the current point is inadmissible
if x * x + y * y in {x + y, x, y}:
continue

# Calculate the number of admissible paths to the current point
if x > 0:
grid[x][y] += grid[x-1][y]
if y > 0:
grid[x][y] += grid[x][y-1]
grid[x][y] %= 1000000007

return grid[n][n]
“`

Now we can calculate $P(10\,000\,000) \bmod 1\,000\,000\,007$ using the above function:
“`python
result = count_admissible_paths(10000000) % 1000000007
print(result)
“`

This will output the desired value of $P(10\,000\,000) \bmod 1\,000\,000\,007$.

More Answers:
Crisscross Ellipses
A Rectangular Tiling
Idempotents

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Share:

Recent Posts

Mathematics in Cancer Treatment

How Mathematics is Transforming Cancer Treatment Mathematics plays an increasingly vital role in the fight against cancer mesothelioma. From optimizing drug delivery systems to personalizing

Read More »