【逻辑面试题】关于需要几架飞机可以让其中一架飞机绕地球一圈的问题
题目如下:
一架飞机在满油的情况下可以绕地球飞0.5圈,假设飞机与飞机之间可以互相加油,请问在确保所有飞机够油飞回起点的情况下,最少需要几架才可以让其中一架飞机成功飞行一圈?
A、3 B、4 C、5 D、6 E、7
网上有很多种说法,但是没有看到完全严谨的解决过程,今天研究了下,分享结果如下:
前提假设:一架飞机满油情况下飞行距离为A(那么地球周长为2A)
1. 假设n架飞机同向起飞,当第一架飞机飞行到a距离时,将部分油加给其他n-1架飞机加满,剩余部分够返回a距离就行了,由此我们得到公式:
第一架飞机飞行的距离被分解为:2a+(n-1)a = A
解方程得到:a = A / (n+1)
2. 第二架飞机飞行了一段距离也将部分油给其他n-2架飞机加满然后返回,那么这段距离是什么呢?也是a,证明过程如下:
假设第二架飞机飞了b的距离后返回,它的飞行距离被分解为:a + 2b + (n-2)b = A
解方程得到:b = (A-a) / n = A / (n+1) = a
3. 由此类推可以得到,第n-1架飞机也飞行了a的距离后返回,那么当第n-1架飞机返回的时候飞行的距离为(n-1)a,即:(n-1)A / (n+1)
从这个式子可以看出来,即使最后一架飞机飞完A的距离,总距离也只有A + [(n-1)A / (n+1)] = (2n)A / (n+1) < 2A,所以n架飞机同同时向飞是不可能做到的。
这个时候考虑有另一波m架飞机逆向接应,当然不能是同时起飞,哪怕是同时,最后一架也得停下来等完成环球飞行的那架飞过来再说。
4. 根据前面的计算,这边m架飞机,当第m-1架飞机返航时,飞行的距离为(m-1)A / (m+1)
5. 好了,最后两架飞机的激情戏了,n波中的最后一架继续飞行了x的距离后同m波最后一架相遇,在接受了m波的援助之后,两者同时向终点飞
假设两者飞行到终点时恰好没油了,此时他们飞行的总距离应该为:x + 2 * (m-1)A / (m+1)
而两者又是在油满的情况下完成这个距离,所以这个距离又为2A
得出公式:x + 2 * (m-1)A / (m+1) = 2A
解方程得到:x = 2A - 2 * (m-1)A / (m+1)
6. 同时呢,从地球周长来看,2A = (n-1)A / (n+1) + x + (m-1)A / (m+1),
结合5中的式子得到:(m-1)A / (m+1) = (n-1)A / (n+1),即m = n
7. 好了,最后一个条件,x <= A,结合5中的式子,直接写结果:m >= 3
因此,要让一架飞机能够环球旅行至少要m+n = 6架