There are $n$ stones in a pond, numbered $1$ to $n$. Consecutive stones are spaced one unit apart.
A frog sits on stone $1$. He wishes to visit each stone exactly once, stopping on stone $n$. However, he can only jump from one stone to another if they are at most $3$ units apart. In other words, from stone $i$, he can reach a stone $j$ if $1 \le j \le n$ and $j$ is in the set $\{i-3, i-2, i-1, i+1, i+2, i+3\}$.
Let $f(n)$ be the number of ways he can do this. For example, $f(6) = 14$, as shown below:
$1 \to 2 \to 3 \to 4 \to 5 \to 6$
$1 \to 2 \to 3 \to 5 \to 4 \to 6$
$1 \to 2 \to 4 \to 3 \to 5 \to 6$
$1 \to 2 \to 4 \to 5 \to 3 \to 6$
$1 \to 2 \to 5 \to 3 \to 4 \to 6$
$1 \to 2 \to 5 \to 4 \to 3 \to 6$
$1 \to 3 \to 2 \to 4 \to 5 \to 6$
$1 \to 3 \to 2 \to 5 \to 4 \to 6$
$1 \to 3 \to 4 \to 2 \to 5 \to 6$
$1 \to 3 \to 5 \to 2 \to 4 \to 6$
$1 \to 4 \to 2 \to 3 \to 5 \to 6$
$1 \to 4 \to 2 \to 5 \to 3 \to 6$
$1 \to 4 \to 3 \to 2 \to 5 \to 6$
$1 \to 4 \to 5 \to 2 \to 3 \to 6$
Other examples are $f(10) = 254$ and $f(40) = 1439682432976$.
Let $S(L) = \sum f(n)^3$ for $1 \le n \le L$.
Examples:
$S(10) = 18230635$
$S(20) = 104207881192114219$
$S(1\,000) \bmod 10^9 = 225031475$
$S(1\,000\,000) \bmod 10^9 = 363486179$
Find $S(10^{14}) \bmod 10^9$.
To solve this problem, we can use dynamic programming to calculate the minimum number of flips required for each possible combination of $a$, $b$, and $c$. We will create a 3D array to store these values, where the indices represent $a$, $b$, and $c$.
We can define a recursive function `min_flips` that takes in $a$, $b$, and $c$, and returns the minimum number of flips required. The base case is when $a = b = c = 1$, which requires 0 flips. For any other case, we will check the following possibilities:
1. If $a$, $b$, and $c$ are equal, we can simply return the value of the previous case, `min_flips(a-1, b-1, c-1)`.
2. If $a$ and $b$ are equal, we need to consider the flip that occurs before flipping a $z$ piece. We can calculate this as `min_flips(a-1, b-1, c) + F(a, b, \sqrt{c})`.
3. If $b$ and $c$ are equal, we need to consider the flip that occurs before flipping an $x$ piece. We can calculate this as `min_flips(a, b-1, c-1) + F(a, \frac{360}{b}, \sqrt{c})`.
4. If $a$ and $c$ are equal, we need to consider the flip that occurs before flipping a $y$ piece. We can calculate this as `min_flips(a-1, b, c-1) + F(a, b, \frac{360}{\sqrt{c}})`.
5. If none of the above conditions are met, we need to consider all three possibilities: flipping an $x$ piece, flipping a $y$ piece, and flipping a $z$ piece. We can calculate this as `min(min_flips(a-1, b, c) + F(a, \frac{360}{a}, \frac{360}{\sqrt{c}}), min_flips(a, b-1, c) + F(a, b, \frac{360}{\sqrt{c}}), min_flips(a, b, c-1) + F(a, b, \sqrt{c}))`.
Once we have the `min_flips` function, we can use it to calculate $G(n)$ by iterating over all valid combinations of $a$, $b$, and $c$ and summing the minimum number of flips required for each combination.
Let’s implement this in Python:
“`python
# Function to calculate minimum number of flips
def min_flips(a, b, c):
if a == b == c == 1:
return 0
if a == b == c:
return min_flips(a-1, b-1, c-1)
if a == b:
return min_flips(a-1, b-1, c) + F(a, b, int(c**0.5))
if b == c:
return min_flips(a, b-1, c-1) + F(a, int(360/b), int(c**0.5))
if a == c:
return min_flips(a-1, b, c-1) + F(a, b, int(360/(c**0.5)))
return min(min_flips(a-1, b, c) + F(a, int(360/a), int(360/(c**0.5))),
min_flips(a, b-1, c) + F(a, b, int(360/(c**0.5))),
min_flips(a, b, c-1) + F(a, b, int(c**0.5)))
# Function to calculate G(n)
def calculate_G(n):
sum_G = 0
for a in range(9, n+1):
for b in range(a+1, n+1):
for c in range(b+1, n+1):
sum_G += min_flips(a, b, c)
return sum_G
# Calculate G(53)
result = calculate_G(53)
print(result)
“`
The above code will output the value of $G(53)$.
More Answers:
Sums of Power SumsUnbalanced Nim
Common Factors Between Two Sequences