话说有一地主,他请一个技艺非凡的匠人修建一漂亮亭子,工期为7天。
地主家没有余粮但有一根细长的金条,他跟匠人约定,每天的工钱就是金条的七分之一。
然而,由于种种原因,金条只能切两刀,请问,应该怎样切才能给匠人每天支付七分之一的黄金?
地主说了,谁能解决这道难题,就把他家女儿嫁给他。
…………
这当然是一道数学题。
答案很简单,但很有趣,如果你之前没有见过,可以先不看下文,先自行思考一下。
我们知道,计算机的世界里只有“0”和“1”。
因为计算机使用“二进制”。
解决本题的思路在于二进制。当然,当你知道答案后,就是不提二进制,你也会做,只是呢,借此了解一下二进制的一些相关知识,也是挺值的。
(若想直接看答案,可直接跳到尾部)
二进制,顾名思义,就是逢二进一。这跟十进制中的逢十进一是一样一样的。
如上图,从右到左,我们可以使用A、B、C,3个火把表示一个3位二进制。A火把如果点燃,就表示1,熄灭,表示0,这跟计算机世界中的“1”和“0”没有本质区别。
现在,我们要用火把表示数字“2”,根据逢二进一的原则,应该往前进一位,也就是B位。
如上图,上面的火把表示数字2。写成二进制就是010。
如上图,上面的火把表示数字3。写成二进制就是011。
如果要表示4,就得在上面的基础上加1,于是,A位往前进一,B位也要往前进一,来到C位。
如上图,C火把点燃表示数字4,写成二进制就是100。
表示5就简单了。
上图表示5,写成二进制就是101。
上图表示数字6,用二进制来表示6就是110。
同理,上图表示数字7,二进制为111。
瞧,如果使用二进制的话,我们就能使用3个火把,在“熄灭-点燃”间表示数字1到7了。其实还可以表示数字0,全部没有点燃时。
这里的熄灭和点燃,就像是灯泡的点亮和熄灭。而最最古老的计算机里也是用一个个灯泡在点亮和熄灭间进行的。
以下为答案
一块金条,每天要支付给工匠七分之一,但只能切两刀,这两刀可以把金条切成4份,也可以切成3份。显然,切成4份是不能解决问题的。
在这里,我们选择切分成3份。
为什么要这么切分?因为这跟上面的二进制是一样的道理。从右往左,第一位代表1,第二位代表2,第三位代表4。
二进制 | 十进制 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
现在,咱们来教一下地主,怎么给工匠每天支付七分之一的黄金。
为了便于表述,上图黄金的1,命名为“小块”,中间那块2叫做“中块”,左边那块4叫做“大块”。
现在开始支付:
第一天:将小块金条给工人。
第二天:从工人那里取回小块,并给工人中块。(取回的过程相当于A火把熄灭,也相当于1变成0)
第三天:将小块支付给工人。
第四天:从工人那里取回小块和中块,并给工人大块。(相当于熄灭前两个火把,点燃C)
第五天:将小块给工人。
第六天:从工人那里取回小块,并给他中块。
第七天:将手里最后的小块支付给工人。
方法就是这样的。
我们终于帮地主家解决了难题……