- 5 八门金锁 (难度:高)
这是一把奇怪的锁,它的表面只有八个按钮,整齐地排列成正八边形。但你知道,每个按钮的下方都有一个机关,每个机关均有“开”“关”两种状态;只有所有机关均处在“开”时,锁才能打开。当你按下某个按钮,其下方的机关就会切换状态,但按钮会复原,你无法从锁的表面看到机关的状态,更不知道机关的初始状态。更加要命的是,当你每次按下按钮之后,其下方的机关会围绕其中心进行随机地旋转,从而改变按钮与机关的对应关系,而你无从得知每次旋转究竟转了多少。唯一的好消息是,你每次可以同时按下多个按钮。
请设计一个方案,能够用至多有限次按下按钮的操作,「确保」将锁打开。看来这些题目还是太难了。发下第一题答案吧:
三堆硬币记为abc,它们的的初始值为a0,b0,c0,且a0≤b0≤c0。显然b=a是一个能完成任务的充分条件。不难发现,如果b=2k×a,只需对c和a进行操作,就可以达到b=ka的状态。同样如果b=(2k+1)a,只需对b和a操作,就可以达到b=ka的状态。重复这一过程,b/a的值在严格减小,且b永远≥a,c也永远不会用完。当b/a减小到1时,即可完成任务。因此得出结论:b0被a0整除是一个能完成任务的充分条件。
接下来,很自然地,若b0不能被a0整除,使用带余除法将b写成n×a0+r(r<a0)。和上一步采取同样的操作(n=2k时操作c和a;n=2k+1时操作b和a)最终可以使n=0,即b=r。注意r<a0,因此此时三堆硬币的最小值一定小于a0。将新的最小值记为a0,重复上面的操作,可以使最小值严格减小。当最小值减小为1时,b0一定被a0整除,于是可以完成任务。
这个证明主要是为了表述我的思路,事实上作为答案可以更简洁一些。继续第5题:4个按钮的情况,将1,3和2,4分成2组,看成2个大锁,当1,3都开或都关是,记这个大锁为开,1开1关的情况记大锁为关,2,4同理看成一个大锁。如果2个大锁都是开,通过同时按4个按钮,按1,3按钮,再按4个按钮,一定能打开。如果2个大锁都是关,先执行上面3步,不会改变大锁状态,按1,2,2个大锁都会变成开,再重复上面3个步骤即可。如果大锁一开一关,执行上面的所有步骤,不会改变大锁状态,这时按1,就能把大锁变成同时开或关,再按上面的操作开锁。总体步骤就是:按4个,按1,3,按4个,按1,2,按4个,按1,3,按4个,按1,按4个,按1,3,按4个,按1,2,按4个,按1,3,按4个第5题,8个锁情况重写一下吧
把15,26,37,48这4对锁看成4个大锁,15记为1号大锁,类推,大锁里2两个锁同开同关时大锁记为开,开关不同记为关。
先考虑4个大锁都是开的情况,按照上面4个锁的步骤操作4个大锁,比如按1变为按15,就可以将全部的锁打开。记这一套操作为动作1,由于动作1的每个操作都同时操作大锁里的2个小锁,所以动作1不会改变大锁的状态。
再考虑对1234号小锁进行上面4个按钮的操作,在这个过程中,一定会出现4个大锁同时为开的情况。
那么,总体步骤就是按照上面4个锁的操作,没次操作后,加一个动作1就可以了6
n个红点和n个兰点确定后,必然可以用一个封闭区域将所有点都包含在内。
任取一红点和一兰点形成线段红a兰a,并将该线段延长,将该封闭区域分成区域x和区域y。由于三点不共线,所以该直线上没有其他红或兰点。
假设区域x中有红点,任取其中一点红b,连接红b兰a,延长红b兰a,则原封闭区域分成区域x_1和区域y_1,且区域y包含于区域y_1
如此重复,必然在有限次后可以得到两区域,区域k和区域i,且区域k中没有任何红或兰点。此时分割这两个区域的直线上仅有一红点和一兰点,这两点的线段必然不会和任意其他两点的线段相交
那么原题就变成n-1个红点和n-1个兰点。重复以上步骤,则n条线段都不相交。6
推论①,如果某圆中有弦,那么该弦同侧的任意两点形成的线段必不和该弦相交。
将2n个点置于一个圆中,找出其中距离圆周最近的一个点(如果多个点到圆周距离同最近,则随意取一个点)。
不妨记该点为红点x,过x做该点直径垂直的弦l,则弦l及其弓形中没有除红x以外的点。
将弦l以红x为轴,两端点始终在圆周上,顺时针旋转。当旋转经过其他2n-1个点中某点时,记旋转已经覆盖了a红c兰,共a+c个点。旋转到最后一个点时,必然c≥a。
旋转到第一个点时,c=a=0,如果第一个点是兰,那么该弦就将n-1红n-1兰分成在该弦的任意一侧,红兰数量相等的两部分。由推论①,相当原题变成n-1红n-1兰。
如果第一个点是红,旋转到第二个点时,a>c,由于最终c≥a,必然会有c=a的时候。旋转到第k个点时,c=a,则同第一个点考虑。当一直到最后,每次c=a时,都是两红点的弦,那么最后必然是c=a,且弦上是1红1兰。
也就是说,旋转中必然可以排除掉1红1兰,再根据旋转结果,将剩余2n-2个点分成两部分考虑。@gf10025 对第6题的解答和楼主自己的解答思路很像,而且比楼主的解答还要简洁一些,是一个不错的答案。
但第6题有一个特别简洁的证明,比楼主的思路高明很多:
由于红蓝点的配对方式是有限的,从中选择一种使n条线段的总长度最小的配对方式,这种方式即可保证线段两两不交。
证明:反证法。不妨令ac为红点,bd为蓝点。若某种配对方式S使线段ab和cd相交,我们可以更改配对,让ad与bc分别配对。由于三角形两边之和大于第三边,新的配对方式中线段的总长一定小于S中线段的总长,故S不是使线段总长最小的配对方式。证毕。
这种思维方式非常有用,第7题也可以用相似的方式解决。