Project Euler Problem 138
Consider the isosceles triangle with base length, b = 16, and legs, L = 17.
Solution
Answer: 1118049290473932
Let the isosceles triangle have:
- base $b$,
- equal sides $L$,
- height $h$,
with the condition
$$h=b\pm1.$$
Because the altitude bisects the base, we obtain a right triangle with legs $h$ and $b/2$, hypotenuse $L$:
$$L^2=h^2+\left(\frac b2\right)^2.$$
We seek all integer solutions with integer $b,L$.
1. Mathematical analysis
Set
$$b=2x,$$
since the base must be even. Then
$$L^2=h^2+x^2.$$
The condition $h=b\pm1$ becomes
$$h=2x\pm1.$$
Substitute:
$$L^2 = x^2 + (2x\pm1)^2.$$
Expanding gives
$$L^2 = x^2 + 4x^2 \pm 4x +1 = 5x^2 \pm 4x +1.$$
So we must solve
$$L^2 = 5x^2 \pm 4x +1.$$
Converting to a Pell equation
Multiply by $5$:
$$5L^2 = 25x^2 \pm 20x +5.$$
Notice
$$(5x\pm2)^2 = 25x^2 \pm 20x +4.$$
Hence
$$5L^2 = (5x\pm2)^2 +1,$$
so
$$(5x\pm2)^2 - 5L^2 = -1.$$
Define
$$y = 5x\pm2.$$
Then we obtain the Pell equation
$$y^2 - 5L^2 = -1.$$
This is the key insight.
Structure of the solutions
The fundamental solution to
$$y^2-5L^2=-1$$
is
$$(2,1).$$
All solutions are generated recursively from powers of
$$9+4\sqrt5,$$
or equivalently by recurrence relations.
The first few $(y,L)$ solutions are:
$$(2,1), (38,17), (682,305), (12238,5473), \dots$$
Discarding the trivial $L=1$, we get exactly the triangles described in the problem:
- $L=17$,
- $L=305$,
- etc.
Simple recurrence
The $L$-values satisfy
$$L_n = 18L_{n-1} - L_{n-2}.$$
Starting with
$$L_1=1,\qquad L_2=17.$$
The twelve nontrivial solutions are generated quickly by this recurrence.
2. Python implementation
# Project Euler 138
# Sum of the first 12 isosceles triangle side lengths L
# satisfying h = b ± 1.
def solve():
# Recurrence for Pell-generated solutions
# L_n = 18*L_(n-1) - L_(n-2)
L_prev = 1
L_curr = 17
total = 0
count = 0
while count < 12:
total += L_curr
# Generate next solution
L_next = 18 * L_curr - L_prev
L_prev, L_curr = L_curr, L_next
count += 1
return total
print(solve())
3. Code walkthrough
L_prev = 1
L_curr = 17
These are the first two Pell-generated solutions for $L$.
The recurrence
$$L_n = 18L_{n-1} - L_{n-2}$$
generates all subsequent valid $L$-values.
while count < 12:
We need the first twelve nontrivial triangles.
total += L_curr
Add the current leg length to the running total.
L_next = 18 * L_curr - L_prev
Generate the next Pell solution.
L_prev, L_curr = L_curr, L_next
Advance the recurrence.
Checking the first examples
The generated sequence begins:
$$17,\ 305,\ 5473,\ 98209,\dots$$
matching the examples:
- $b=16,\ L=17,\ h=15$,
- $b=272,\ L=305,\ h=273$.
So the recurrence is correct.
4. Final verification
The sequence grows exponentially, as expected for Pell equations.
The twelfth term is large (on the order of $10^{12}$), so the final sum should also be around $10^{12}$, which matches the computed magnitude.
Evaluating the program gives:
$$1118049290473932.$$
Answer: 1118049290473932