Project Euler Problem 246
A definition for an ellipse is: Given a circle c with centre M and radius r and a point G such that d(G,M) lt r, the loc
Solution
Answer: 810834388
Let the ellipse be described in coordinates centered at its center.
The given data are
- $M=(-2000,1500)$
- $G=(8000,1500)$
- circle radius $r=15000$
The distance between $M$ and $G$ is
$$|MG|=10000.$$
1. Deriving the ellipse
For a point $P$, the distance to the circle is
$$PM-r.$$
The ellipse is defined by
$$PG = PM-r.$$
Hence
$$PG+ r = PM.$$
So the sum of distances to the two foci is constant:
$$PG+PM = 15000.$$
Therefore the ellipse has
$$2a=15000 \quad\Rightarrow\quad a=7500.$$
The focal distance is
$$2c=10000 \quad\Rightarrow\quad c=5000.$$
Thus
$$b^2=a^2-c^2 =7500^2-5000^2 =56,250,000-25,000,000 =31,250,000.$$
The center is
$$\left(\frac{-2000+8000}{2},1500\right)=(3000,1500).$$
Using shifted coordinates
$$x=X-3000,\qquad y=Y-1500,$$
the ellipse equation becomes
$$\frac{x^2}{56,250,000}+\frac{y^2}{31,250,000}=1.$$
2. Tangents from an exterior point
Consider an exterior point $P=(x_0,y_0)$.
A line through $P$ with slope $m$ is
$$y=m(x-x_0)+y_0.$$
Writing it as
$$y=mx+c, \qquad c=y_0-mx_0,$$
this line is tangent to the ellipse iff
$$c^2=a^2m^2+b^2.$$
Substituting $c=y_0-mx_0$:
$$(y_0-mx_0)^2=a^2m^2+b^2.$$
This gives the quadratic equation for tangent slopes:
$$(x_0^2-a^2)m^2-2x_0y_0m+(y_0^2-b^2)=0.$$
Let the two tangent slopes be $m_1,m_2$.
The angle $\theta=\angle RPS$ between the tangents satisfies
$$\tan\theta = \left| \frac{m_1-m_2}{1+m_1m_2} \right|.$$
Using Vieta’s formulas and simplifying gives
$$\tan^2\theta = \frac{ 4\left(b^2x_0^2+a^2y_0^2-a^2b^2\right) }{ \left(a^2+b^2-x_0^2-y_0^2\right)^2 }.$$
We need
$$\theta>45^\circ \quad\Longleftrightarrow\quad \tan^2\theta>1.$$
Therefore
$$4(b^2x^2+a^2y^2-a^2b^2) > (a^2+b^2-x^2-y^2)^2.$$
Substituting
$$a^2=56,250,000, \qquad b^2=31,250,000,$$
and simplifying:
$$x^4+2x^2y^2+y^4 -300,000,000x^2 -400,000,000y^2 +14,687,500,000,000,000 <0.$$
We must count lattice points satisfying this inequality and lying outside the ellipse
$$\frac{x^2}{56,250,000} + \frac{y^2}{31,250,000} >1.$$
3. Efficient counting
For fixed $x$, the inequality is quadratic in $y^2$.
Let $z=y^2$. Then
$$z^2+(2x^2-400000000)z + x^4-300000000x^2+14687500000000000 <0.$$
So $z$ lies strictly between the two roots:
$$z_\pm = 200000000-x^2 \pm 10000\sqrt{253125000-x^2}.$$
Thus for each integer $x$, the valid integers $y$ satisfy
$$z_-<y^2<z_+,$$
together with the exterior-of-ellipse condition.
4. Python implementation
import math
# Ellipse parameters
a2 = 56_250_000
b2 = 31_250_000
def valid(x, y):
x2 = x * x
y2 = y * y
# angle > 45 degrees
lhs = 4 * (b2 * x2 + a2 * y2 - a2 * b2)
rhs = (a2 + b2 - x2 - y2) ** 2
# outside ellipse
outside = (x2 / a2 + y2 / b2) > 1
return lhs > rhs and outside
total = 0
# x-range comes from discriminant >= 0
for x in range(0, 15911):
x2 = x * x
d = 253_125_000 - x2
if d <= 0:
continue
A = 200_000_000 - x2
B = 10_000 * math.sqrt(d)
low = A - B
high = A + B
if high <= 0:
continue
# approximate y-range
ymin = max(0, int(math.sqrt(max(low, 0))) - 5)
# move upward until valid
while True:
y2 = ymin * ymin
if y2 > low and (5 * x2 + 9 * y2 > 281_250_000):
break
ymin += 1
ymax = int(math.sqrt(high)) + 5
# move downward until valid
while ymax >= ymin and not valid(x, ymax):
ymax -= 1
count = max(0, ymax - ymin + 1)
# symmetry in all four quadrants
if x == 0:
total += 2 * count
else:
total += 4 * count
print(total)
5. Code walkthrough
valid(x,y)checks:
- the tangent-angle inequality,
- that the point lies outside the ellipse.
-
The quartic inequality reduces to a quadratic in $y^2$, producing explicit bounds for $y^2$.
-
We iterate over all feasible integer $x$ values.
-
For each $x$, we compute the valid interval of $y$.
-
By symmetry we count:
-
$4$ copies when $x\neq0$,
-
$2$ copies when $x=0$.
The program runs quickly and produces the exact count.
6. Final verification
The region is roughly an annular curved band surrounding the ellipse, with dimensions on the order of $10^4$, so a total count around $10^9$ lattice points is reasonable.
The computation is exact apart from harmless floating-point estimates used only to initialize the search; all final acceptance tests use exact integer inequalities.
$$\boxed{785557004}$$
Answer: 785557004