每年六一儿童节,电视上会有一个叫“撞气球”的游戏。规则很简单。地面上有100个标有数字1到100的气球。裁判喊完“我们走吧!”两位选手,每个都以“1”的分数开始,比赛用脚撞击气球,同时用他们撞击的气球上写的数字乘以他们的分数。一分钟后,观众被允许拿走剩下的气球,每个参赛者报告他/她的分数,他/她坠毁的气球上的数字的乘积。非官方获胜者是宣布最高分的运动员。然而,争议不可避免地会出现,因此,在争议解决之前,官方赢家是无法确定的。声称得分较低的玩家有权挑战对手的得分。得分较低的玩家被认为说了实话,因为如果他/她对他/她的得分撒谎,他/她肯定会撒一个更大更好的谎。如果分数较高的玩家的分数不是由具有挑战性的玩家撞毁的气球所能达到的,则挑战成立。因此,如果挑战成功,声称得分较低的玩家获胜。所以,比如一个玩家声称343分,另一个声称49分,那么显然第一个玩家在说谎;得分343的唯一方法是击碎标有7和49的气球,得分49的唯一方法是击碎标有49的气球。由于两个分数中的每一个都需要击碎标有49分的气球,声称得到343分的那个被认为是在说谎。另一方面,如果一个玩家要求162分,而另一个玩家要求81分,那么两个玩家都有可能说的是实话(例如,一个玩家撞上了气球2、3和27,而另一个玩家撞上了气球81),因此挑战不会被支持。顺便说一下,如果挑战者在计算他/她的分数时出错,那么挑战将不会被支持。例如,如果一个玩家要求10001分,另一个要求10003分,那么显然他们都没有说实话。在这种情况下,质疑将不会得到支持。不幸的是,任何愿意裁判一场热气球坠毁比赛的人都可能在炎热的气氛中过于兴奋,以至于不能合理地期望他/她进行裁判所要求的复杂计算。因此,清醒的程序员,你需要提供一个软件解决方案。