趣题:老鼠与毒药问题的推广

    今天的趣题来源于 IBM Ponder This 三月份的谜题

    大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

    这个问题的答案也堪称经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进制数。让第一只老鼠喝掉所有二进制数右起第一位是 1 的瓶子,让第二只老鼠喝掉所有二进制数右起第二位是 1 的瓶子,等等。一星期后,如果第一只老鼠死了,就知道毒药瓶子的二进制编号中,右起第一位是 1 ;如果第二只老鼠没死,就知道毒药瓶子的二进制编号中,右起第二位是 0 ⋯⋯每只老鼠的死活都能确定出 10 位二进制数的其中一位,由此便可知道毒药瓶子的编号了。

    现在,有意思的问题来了:如果你有两个星期的时间(换句话说你可以做两轮实验),为了从 1000 个瓶子中找出毒药,你最少需要几只老鼠?注意,在第一轮实验中死掉的老鼠,就无法继续参与第二次实验了。

Read more…

趣题:两步猜出多项式的各项系数

有一个黑匣子,黑匣子里有一个关于 x 的多项式 p(x) 。我们不知道它有多少项,但已知所有的系数都是正整数。每一次,你可以给黑匣子输入一个整数,黑匣子将返回把这个整数代入多项式后的值。有一个不可思议的结论:你可以在两步之内还原出整个多项式!这是如何做到的呢?

首先,输入 1 ,于是便得到整个多项式的所有系数之和。不妨把这个系数和记作 S 。下一步,输入 S + 1 ,于是黑匣子返回

    an * (S + 1)n + an-1 * (S + 1)n-1 + … + a1 * (S + 1) + a0

把这个值转换成 S + 1 进制,依次读出每一位上的数,它们就是多项式的各项系数了。

来源:http://rjlipton.wordpress.com/2010/12/20/some-mathematical-gifts/
这个有趣的问题曾经以另一形式出现在了这个 Blog 里,见 这里 的 35 题。

– 1 + 2^7 = 127 这样的算式有多少个?

    或许有人会对算式 5^2 = 25 有一种特别的偏好——等式左右两边都用到了相同的数字,让人深感奇妙。类似的算式还有很多,例如

      5^(6 – 2) = 625
      (4 / 2)^10 = 1024
      ((86 + 2 * 7)^5 – 91) / 3^4 = 123456789

    我们自然而然地提出了这样一个问题:这样的算式究竟有多少呢?答案是:无穷多。只需要借助本文一开始提到的算式 5^2 = 25 ,我们就能轻易构造出无穷多个同样满足这种神奇性质的算式来:

      50^2 + 0 = 2500
      500^2 + 0 + 0 = 250000
      5000^2 + 0 + 0 + 0 = 25000000
      ……

    现在,让我们来看看另一类更加精妙的算式:等式两边的数字顺序也完全一样!

      – 1 + 2^7 = 127
      (3 + 4)^3 = 343
      16^3 * (8 – 4) = 16384

    这样的算式是否仍然有无穷多个呢?

Read more…