So I’ve been solving IMO problems almost every year, ever since I was a math Olympiad contestant, either posting them to AoPS or just keeping the solutions to myself/discussing with other math Olympiad people.
Usually, I used to solve the problems in a single sitting, but given the fact that I missed a couple of years at some point, and that I had a bit of time this time, I decided to do a proper IMO mock this time (spoiler: P4 left a bad enough taste that I didn’t want to really put in effort into P6).
Also, shortly after, it turned out that both OpenAI’s and Google’s internal models solved the same number of problems as I did (modulo some progress on P6), so congratulations to them for the milestone! I was procrastinating on writing this blog, but this milestone partially motivated me to write up my solutions too.
Here are some proof sketches (it’s not hard to fill in the details if you’re familiar with math Olympiads) and the thought process behind each problem, with some potentially colorful commentary on my perception of the problems.
Please take the comments with a grain of salt - I used to enjoy IMO problems much more as a kid or maybe even as a university student. The tone might make you think that these problems are not good - I would like to point out that this is not the case at all. IMO problems are chosen with multiple objectives in mind, one of them being quality, and not to just have the hardest problems. It’s probably telling that I’ve moved on to other types of problems (though I do enjoy solving IMO-like problems too!).
Problem 1
A line in the plane is called \(\textit{sunny}\) if it is not parallel to any of the \(x\)–axis, the \(y\)–axis, or the line \(x + y = 0\).
Let \(n \ge 3\) be a given integer. Determine all nonnegative integers \(k\) such that there exist \(n\) distinct lines in the plane satisfying both of the following:
- for all positive integers \(a\) and \(b\) with \(a + b \le n + 1\), the point \((a, b)\) lies on at least one of the lines; and
- exactly \(k\) of the \(n\) lines are sunny.
Solution sketch
The first piece of intuition comes from the fact that you have \(O(n^2)\) points but only \(O(n)\) lines. So around \(O(n)\) average incidence. This is very suspicious, because as your “slope” becomes more irregular, the number of lattice points it covers drops a lot. So the answer should be relatively small \(k\) only.
So you first do a brute-force check for some smaller \(n\) (I did it for \(n = 3\)), and figure out that \(k = 0, 1, 3\) work for \(n = 3\). Then you try to look at some larger \(n\), run out of patience at the brute-force, and realize that to cover the \(3n - 3\) boundary points with \(n\) lines for \(n > 3\), you need at least \(3\) of these points on the same line. This promptly lets you remove one of the boundaries and induct down.
So the answer is \(0, 1, 3\), with the construction for each being lifted from \(n = 3\) for bigger \(n\).
Comments
Slightly boring, felt slightly harder than a usual P1 (unless it was cognitive decline at play). Not a bad problem at all, especially for P1.
Problem 2
Let \(\Omega\) and \(\Gamma\) be circles with centres \(M\) and \(N\), respectively, such that the radius of \(\Omega\) is less than the radius of \(\Gamma\). Suppose \(\Omega\) and \(\Gamma\) intersect at two distinct points \(A\) and \(B\). Line \(MN\) intersects \(\Omega\) at \(C\) and \(\Gamma\) at \(D\), so that \(C, M, N, D\) lie on \(MN\) in that order. Let \(P\) be the circumcentre of triangle \(ACD\). Line \(AP\) meets \(\Omega\) again at \(E\neq A\) and meets \(\Gamma\) again at \(F\neq A\). Let \(H\) be the orthocentre of triangle \(PMN\).
Prove that the line through \(H\) parallel to \(AP\) is tangent to the circumcircle of triangle \(BEF\).
Solution sketch
Fairly mechanical and straightforward (so I will skim over trivial details) - constructing the diagram shows that \(P\) is the $A$-excenter of \(AMN\). Using the circles, angle chasing gives that \(EBF\) is inversely similar to \(MAN\) so it suffices to show that \(\mathrm{dist}(H, EF \equiv AI) / \mathrm{dist}(M_A, BC) = \frac{BE}{AM}\) where \(M_A\) is the midpoint of the arc \(MN\) (not containing \(A\)) in the circumcircle of \(MAN\) and \(I\) is the incenter of \(MAN\). Now note that \(H\) is the reflection of \(I\) in the midpoint of \(MN\), so the ratio on the left is \(2 \sin \frac{M - N}{2}\) which is the same as the ratio on the right (\(BE\) is an arc in the circle centered at \(M\)).
Comments
This problem was authored by Tran Quang Hung, and his problems are pretty fun, so I know what this problem could have been. Geometry has been my strongest subject by far, so maybe I’m slightly desensitized even though this problem felt better than other recent geometry problems on the IMO. Not to mention my general dislike of IMO geometry problems - I would prefer if they had more hard problems that people can’t just bash and that at least feel aesthetically pleasant. Higher order curves (even just conics) are super rich, I hope they show up in IMO geometry at some point (I’ve seen some, in the 2010 IMO Shortlist for example, but it’s somewhat sad that the actual IMO geometry problems feel like filler for contests, as a legacy subject). I do get the point behind not trying to shove more theory down contestant’s throats, though.
Problem 3
Let \(\mathbb{N}\) denote the set of positive integers. A function \(f\colon\mathbb{N}\to\mathbb{N}\) is said to be bonza if
\[ f(a)~~\text{divides}~~b^a-f(b)^{f(a)} \]
for all positive integers \(a\) and \(b\).
Determine the smallest real constant \(c\) such that \(f(n)\leqslant cn\) for all bonza functions \(f\) and all positive integers \(n\).
Solution sketch
Let \(P(a, b)\) denote the statement of the problem: \(f(a) | b^a - f(b)^{f(a)}\). We start off by noting that \(f(x) \equiv x\) is a trivial solution. So we will assume that there is at least some \(n\) such that \(f(n) \ne n\).
First we do some standard substitutions, as with all FEs - \(P(a, a)\) gives that \(f(a) | a^a\), so when \(a\) is a prime \(p\), we get \(f(p) = p^{k_p}\) for some non-negative integer \(k_p\) specific to \(p\). \(P(p, n)\) gives us \(f(p) | n^p - f(n)^{p^{k_p}}\), so if \(k_p > 1\), we get \(p | f(p) | n^p - f(n)^{p^{k_p}}\). The right side is congruent to \(n - f(n)\) modulo \(p\), so \(p\) divides \(n - f(n)\). This means that other than finitely many \(p\), in particular, for all primes \(p > p_0\) for some fixed \(p_0\), \(f(p) = 1\).
\(P(a, p)\) for such primes \(p\) gives us \(p^a \equiv 1 \pmod {f(a)}\). Since this happens for all large enough \(p\), this is a very strong statement. Consider the prime factors of \(f(a)\) and their primitive roots and let’s try to apply Dirichlet to construct a large \(p\) that is a primitive root of each prime power factor of \(f(a)\). Let’s also assume \(a\) is odd, so \(f(a) | a^a\) is odd, and we don’t run into shenanigans with even factors of \(f(a)\). This lets us apply Dirichlet, and thus \(p_i^{\alpha_i - 1} (p_i - 1) | a\) for each prime power factor \(p_i^{\alpha_i}\) of \(f(a)\). The left side is even and the right side is odd, which is a contradiction. So there must be no prime factors of \(f(a)\), i.e., \(f(a) = 1\) for odd \(a\). In particular, we can now reduce our bound for \(p_0\) to \(1\).
Another fact that we can get from this is that if an odd prime \(p\) divides \(f(a)\), using \(P(a, p)\) gives us \(p | f(a) | p^a - 1\), which is a contradiction. So \(f(a)\) is a power of \(2\). Now we apply \(P(2k, 3)\) and the lifting the exponent lemma to realize that \(\nu_2(f(n)) \le \nu_2(n) + 2\) for even \(n\), and when we combine it with the previous observation, we get \(f(a) \le 2^{\nu_2(n) + 2} \le 4a\).
So we get an upper bound on \(c\). Now for the lower bound, we need to exhibit an example. Finding this was slightly tricky because the naive construction where you turn the inequality signs into equalities doesn’t work, but you can set \(f(2) = 4\) and everything falls into place.
Comments
This was more fun to work on than the previous problems, but it felt absurdly easy for a number theory/algebra P3, and could have been more suitable for a harder P5. I remember thinking while solving this problem whether kids don’t do number theory FEs these days. To be fair, this was the problem that took me the most amount of time out of all problems on this IMO that I full-solved (around 40 mins), though that is still pretty low considering how out of practice I’ve been.
Problem 4
A proper divisor of a positive integer \(N\) is a positive divisor of \(N\) other than \(N\) itself.
The infinite sequence \(a_1, a_2, \cdots\) consists of positive integers, each of which has at least three proper divisors. For each \(n\geq 1\), the integer \(a_{n+1}\) is the sum of the three largest proper divisors of \(a_n\).
Determine all possible values of \(a_1\).
Solution sketch
The problem has a bunch of annoying details and cases to miss, so I won’t bother writing out anything other than the answer and the proof sketch: the answer is all \(n = 6 \cdot 12^k \cdot m\) where \(\gcd(m, 10) = 1\).
The idea is to note that the largest three proper divisors are \(N\) divided by \(x\) where the $x$-s are non-\(N\) divisors of \(N\). Now you basically try and figure out what these $x$-s are, and it leads you to a wild goose chase. Once you figure out some details (like elements of the sequence must be divisible by both \(2\) and \(3\) - doable via simple modular arithmetic arguments), it turns out that in one of the easier cases, \(12\) gets replaced by \(13\) as a factor, so you factor out all $12$-s from the number, and then make cases on what the rest of it is, at which point you solve the problem.
Comments
Firstly, you should consider the fact that I had to edit this subsection to sound more balanced. I feel for the poor graders who have to grade through reams of casework that I’m expecting IMO contestants to write (they have 4.5 hours to write solutions each day, and some of them solve the same problem for all of that time). In the amount of casework required, it reminded me of IMO 2015 P2 (go figure), and also left a bad aftertaste that persisted through solving the rest of the problems on this day. It is a completely personal experience, and I can’t speak for others. As much as I did not enjoy the problem (which is just my personal preference, to be completely clear), I believe this is a somewhat reasonable problem for letting people get some partials, which is good for more defined medal cutoffs (whether that is a good thing or not is a completely different question altogether).
Problem 5
Alice and Bazza are playing the inekoalaty game, a two‑player game whose rules depend on a positive real number \(\lambda\) which is known to both players. On the $n$th turn of the game (starting with \(n=1\)) the following happens:
- If \(n\) is odd, Alice chooses a nonnegative real number \(x_n\) such that \[ x_1 + x_2 + \cdots + x_n \le \lambda n. \]
- If \(n\) is even, Bazza chooses a nonnegative real number \(x_n\) such that \[ x_1^2 + x_2^2 + \cdots + x_n^2 \le n. \]
If a player cannot choose a suitable \(x_n\), the game ends and the other player wins. If the game goes on forever, neither player wins. All chosen numbers are known to both players.
Determine all values of \(\lambda\) for which Alice has a winning strategy and all those for which Bazza has a winning strategy.
Solution sketch
Let’s rename Bazza to Bob for a bit.
Immediately, we note that there are competing norms here - \(\ell_1\) and \(\ell_2\). So we first look at the induced unit balls of these norms (contours for short). Guessing the strategy greedily, for Alice to have the “coordinates” of the sequence comfortably within her contours but outside Bob’s, she would have to have all “coordinates” be as sparse as possible, while for Bob to have the sequence comfortable in his contours but outside Alice’s, he needs to have them be as close to each other as possible.
Let’s try to estimate the \(\lambda\) boundary using such these strategies (Alice picks \(0\) while Bob picks something else) - if Alice picks \(x\), Bob picks \(\sqrt{2 - x^2}\) to keep his bounds tight. Then \(x + \sqrt{2 - x^2} \ge \sqrt{2}\), so we can guess \(\lambda = 1/\sqrt{2}\).
The problem now falls apart, and it’s just simple case-work - when \(\lambda > \frac{1}{\sqrt{2}}\), Alice keeps picking \(0\) (this can be verified to be safe for her at every move) and once the gap between the bound and the sum becomes large (it is positive and at least linear in \(n\)), picks the number that makes the bounds for her tight, adding a term that’s quadratic in \(n\) to Bob’s bound, which is losing for Bob if Alice has waited for a large enough \(n\). When \(\lambda < \frac{1}{\sqrt{2}}\), Bob wins by choosing \(\sqrt{2 - x^2}\) whenever Alice plays \(x\) (\(x\) is guaranteed to be \(< \sqrt{2}\) by bounding arguments and induction). At some point when \(n\) becomes large enough, Bob wins.
Comments
I might be a bit biased because I’ve co-authored a problem with one of the authors of this problem before, but I think this was the breath of fresh air that made me even want to think about trying to solve P6. Again, it’s a bit too easy for a P5, I would have liked it to be a substitute for P4.
Problem 6
Consider a \(2025 \times 2025\) grid of unit squares. Matilda wishes to place on the grid some rectangular tiles, possibly of different sizes, such that each side of every tile lies on a grid line and every unit square is covered by at most one tile.
Determine the minimum number of tiles Matilda needs to place so that each row and each column of the grid has exactly one unit square that is not covered by any tile.
Partial solution sketch
I came up with a construction that seems to be somewhat close to optimal (and it reminds me of IMO 2014 P2), with \(n^2 + 2n - 3\) tiles for an \(n^2 \times n^2\) grid (2025 is a perfect square). I tried some permutation stuff with the uncovered squares (treat the row ids and column ids of each uncovered square as two sequences that are permutations of each other, and apply something like Erdos Szekeres), but probably didn’t get far enough to solve the problem after trying to prove optimality for 10 minutes after coming up with the construction. I guess it would be worth a point or two in the final rubric, but since I’m not sure, I decided to conservatively not give myself any points for this.
Comments
I’m still not completely sure if my construction is optimal. The problem reminded me of two problems - IMO 2014 P2, and one of Anton Trygub’s problems that I tested for an ICPC (pre-?)regional that he authored. This is probably one of the more fun problems in this contest, and also very competitive programming flavored.
Some statistics
My perception of the problem difficulties (time taken to full solve, other than P6): P2 = P5 < P1 < P4 < P3 < P6.
My perception of problem qualities: P4 < P1 = P2 < P3 < P5 < P6.
My (unofficial) score (not to be taken too seriously): \(35 + \epsilon\) where I’m expecting \(\epsilon\) to be in \([0, 2]\).
Time taken per problem: P2 = ~10 mins, P5 = ~15 mins, P1 = ~20 mins, P4 = ~30 mins, P3 = ~40 mins, P6 (incomplete) = ~30 mins.
Final remarks
As a problem set, the problems felt relatively easy-to-middle-heavy, lots of mid-difficulty problems, no very hard problems. It also felt easier than previous years. The quality was fine with the exception of P4.
I’m guessing that (with high probability) the subject distribution was CGNNAC - not the most favourable one for me in terms of scoring, but I would take it over something like CCCCCC (though I would probably enjoy solving the problems more with an all-C paper - the IMO combinatorics shortlist is the dumping ground for any non-standard problems).
While solving these problems, I noticed how different my thought process and mathematical tastes have become over time - immediately jumping on to norms in P5 while I would have previously tried to apply more “local” methods like inequalities, becoming even more averse to case-analysis than I used to be (in university too, perhaps), trying to find structure in number theory problems that seemed to be there back then but which now feel like slightly more of an ad hoc mess of independent ideas with no coherent background (not that it’s a bad thing). I also used to enjoy geometry problems a lot, but I guess prolonged exposure to non-Euclidean geometry and advanced triangle geometry made me a bit desensitized to Olympiad geometry.
The news that OpenAI and Google also achieved gold medal performance on the IMO seems to be quite a big landmark, though the backdrop is nowhere near as impressive as the Go moment. It is still something most people didn’t think was possible, so it should be something most people should update on.