小仙女有N 个袋子,每个袋子装无限豆。 N-1 个袋子的豌豆是普通豆,每粒重一克。有一个袋子装的是魔法豌豆,每个中两克。每次,小仙女可以从每个袋子里取出若干豌豆,然后放在一起称有多重。由于称坏了,不能正确称出大于 1717 克的东西,即使大于 1717 克,称量的结果仍是 1717 克(不过称不会损坏)。请帮她在 10 次称量找出装有魔法豌豆的袋子,并找到 N 的最大值。
解:我们可以从N 个袋子中的 1716 个袋子里面每次取一颗,如果称量的值为 1717 克时,我们得到此次 1716 个袋子中某一袋装的是魔法豌豆。然后重复上面的操作 K 次( K<10), 我们总能得到在某一次 1716 个袋子中可能存在一袋装的是魔法豌豆,否则则为剩下豌豆的袋数为 M. 。所以,我们可以得到 N 的最大值是 N=K*1716+M ( K<10), 那么我们怎么样才能确定这个 K 的最大值以及 M 的最大值。
首先,我们先确定下如果魔法豌豆在1716 个袋子中某一袋需要找到魔法豌豆的次数。我们把袋子分成 572 , 573 , 571 袋三分,分别从每一份的袋子中取 0 , 1 , 2 颗,那么魔法豌豆称的可能重量分别是 1715 克, 1716 克, 1717 克。 (K=K+1)
573=83× 3+81 × 4 ,即把 573 个袋子分成 7 份, 3 份为 83 个袋子, 4 份为 81 个袋子。
从83 的袋子里面依次分别 0 , 1 , 2 , 81 的袋子里面取 3 , 4 , 5 , 6 颗。撑得的可能重量分别为 1707 , 1708 , 1709 , 1710 , 1711 , 1712 , 1713 克。( K=K+1)
83=2× 40+3 ,分成 41 份, 40 份两袋和一份 3 袋。 3 袋取 0 颗, 2 袋每份取 1 , 2 。。。 40 ,则撑得重量为 1640 , 1641 ,。。。。 1680 克。( K=K+1)
3=3× 1 (略) K= K+1=10 那么我们容易得到1716 个袋子我们需要 4 次,那么 K 的最大值为 6. 。那么 N=1716 × 6+M=10296+M
我们知道如果M<=1716, 那么上述依然成立,这时,我们取 M=1716 求得暂时的最大解,那么是不是可以让 M 取更大的值,并且依然可以在 4 次以内找到装有魔法豌豆的袋子呢,事实上是可以的。
以上述分袋求解过程来看,最后总是要剩余袋子把分成每份为一袋的,那么我们就有了一个反推的过程。我们假设有K 个一份的袋子,那么每袋取值分别为 0 , 1 , 2 , K-1, 那么有取值在区间 [(K-1)*K/2,(K-1)*K/2+K-1] 内。容易求得 K=58.( 剩 3 次)
474=58× 8+10 ,取 0 —— 8 ,得到范围为 [1704,1711].( 剩 2 次)
1519=474× 3+97 ,取 0 —— 3 ,得到范围为 [1713,1714,17151716]( 剩余一次)
M=1519× 2+98=3136 ,取值 0 , 1 , 2 ,得到范围为 [1715,1716,1717]
最后得到Nmax=10296+3136=13432