2016 年 IMO 的第 6 题(也就是第二天比赛的第 3 题)非常有趣,这恐怕算得上是近十年来 IMO 的所有题目中最有趣的题目之一。平面上有 n ≥ 2 条线段,每两条线段都有一个交点,并且任意三条线段都不交于同一点。 Geoff 打算在每条线段的其中一个端点处放置一只青蛙,并让每只青蛙都朝向它所在线段的另一个端点。然后, Geoff 将会拍 n – 1 次手。每次拍手时,每只青蛙都立即向前跳到它所在线段的下一个交点处(青蛙们在跳跃过程中始终不会改变方向)。 Geoff 希望巧妙地安排初始时放置青蛙的方法,使得在整个过程中,任意两只青蛙都不会同时到达某个相同的交点。这个题目有两个小问。
下图是 n = 5 时的其中一种可能的线段布局,以及其中一种满足要求的青蛙放法。你可以试一试, n = 5 时的其他放法就不见得满足要求了,而 n 为偶数时的任何一种放法都是不满足要求的。
注意到,在上面这种满足要求的青蛙放法中,任何两只青蛙都不在“相邻”的端点上。这不是巧合。我们接下来说明,把两只青蛙放在“相邻”的端点上,则这两只青蛙必然会相撞。这里,我们可以为“相邻”下一个更加明确的定义。将所有线段充分延长,并与一个充分大的圆相交。把每条线段的端点都改到这些交点处,于是所有线段的所有端点就变为了一个圆周上的 2n 个点。如果两个端点之间的圆弧上没有其他端点,我们就说这两个端点是相邻的。
现在,假设我们把两只青蛙放在了两个相邻的端点上,如上图所示。蓝色的线表示的就是这两只青蛙所走的路,其中实线部分表示这两条路相交前的部分。由于两个端点是相邻的,因此这两条蓝线之间不再夹着其他线段。所有其他线段都是横穿过这两条蓝线的,它们与两条蓝线的交点要么都在虚线部分,要么都在实线部分。这会使得两条蓝色实线上产生出相同数目的交点。于是,两只青蛙将会同时到达两条蓝线的交点处。
这就说明,把两只青蛙放在相邻的端点上是必死的。在一个满足要求的放法中,任何两只青蛙中间都要间隔至少 1 个端点。然而,我们一共有 n 只青蛙和 2n 个端点,因而这些青蛙必须得恰好每隔 1 个端点放一只。考虑到这一点,我们立即就把第 2 小问解决了。当 n 为偶数时,对于任意一条线段,都有 n – 1 条线段穿过它,这意味着这条线段的两个端点之间恰好隔着 n – 1 个端点(不管是算哪边的弧),这是一个奇数。所以,如果每隔 1 个端点放一只青蛙,那么这条线段的其中一端放了青蛙,另外一端也会有只青蛙。这是不符合要求的。
而当 n 为奇数时,每隔 1 个端点放一只青蛙,就会正好让每条线段上都有一只青蛙。容易看出,此时任意两只青蛙之间都会隔着奇数个端点。接下来,我们证明,只要两只青蛙之间隔着奇数个端点,那么这两只青蛙一定不会相撞。如上图所示,我们还是用蓝色的线表示这两只青蛙所走的路。其他的线段分成这样三类:
根据刚才的讨论,第一种类型的线段不会在两条蓝色实线上产生交点,第二种类型的线段会在两条蓝色实线上产生相同数目的交点。至于第三种类型的线段,每一条要么与这边的蓝色实线相交,要么与那边的蓝色实线相交。由于两只青蛙之间隔着奇数个端点,因此这种类型的线段有奇数条,在这边的蓝色实线产生的交点数与在那边的蓝色实线产生的交点数就必然是一奇一偶。综合这三种类型的线段,我们最终得出,这些线段在两条蓝色实线上产生的交点数目是不同的,因为数目的奇偶性都不一样。所以,两只青蛙不会相撞。
回想我们刚才所说的,当 n 为奇数时,间隔着放青蛙会使得每条线段上都各有一只青蛙,并且任意两只青蛙之间都会隔着奇数个端点。这就将成为一种满足要求的放法。于是,我们就完整地证明了第 1 小问的结论,整个问题也就解决了。
这道题背后有一个有趣的故事。现任 IMO 主席 Geoff Smith 赛前曾经说,他将会以一种特殊的形式与参赛选手互动。最终,谜底揭晓:他成为了 IMO 第 6 题的主人公。