Fibonacci Paths

Alice walks on a lattice grid. She can step from one lattice point $A (a,b)$ to another $B (a+x,b+y)$ providing distance $AB = \sqrt{x^2+y^2}$ is a Fibonacci number $\{1,2,3,5,8,13,\ldots\}$ and $x\ge 0,$ $y\ge 0$.

In the lattice grid below Alice can step from the blue point to any of the red points.

Let $F(W,H)$ be the number of paths Alice can take from $(0,0)$ to $(W,H)$.
You are given $F(3,4) = 278$ and $F(10,10) = 215846462$.

Find $F(10\,000,10\,000) \bmod 1\,000\,000\,007$.

To solve this problem, we will use dynamic programming to compute the number of paths from $(0,0)$ to $(W,H)$.

First, let’s define a function `fibonacci(n)` that returns the n-th Fibonacci number. We can implement this function using the recursive definition of Fibonacci numbers:

“`python
def fibonacci(n):
if n <= 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) ``` Next, we define a function `count_paths(W, H)` that computes and returns the number of paths from $(0,0)$ to $(W,H)$. We will use a 2D matrix to store the intermediate results. ```python def count_paths(W, H): # Create a (W+1)x(H+1) matrix to store the intermediate results dp = [[0] * (H+1) for _ in range(W+1)] # Initialize the base cases dp[0][0] = 1 # Compute the number of paths for each cell for i in range(W+1): for j in range(H+1): # Check if the distance is a Fibonacci number if fibonacci(i*i + j*j) != 0: # Count paths from the previous cells if i > 0:
dp[i][j] += dp[i-1][j]
if j > 0:
dp[i][j] += dp[i][j-1]

# Return the number of paths from (0,0) to (W,H)
return dp[W][H]
“`

Now, we can compute the value of `F(10000, 10000)` modulo `1_000_000_007` by calling the `count_paths` function.

“`python
result = count_paths(10_000, 10_000) % 1_000_000_007
print(result)
“`

This will give us the desired value of `F(10_000, 10_000) % 1_000_000_007`.

More Answers:
Incomplete Words II
Largest Prime
A Long Chess Match

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

Share:

Recent Posts