有4个砝码a,b,c,d重量分别是1,3,9,27,问这几个砝码可以称重多少种可能的重量?
若把放左边设为-1,不放设为0,放右边设为1,则每个砝码都有3种放法,所有总共有3^4=81中放法,穷举法是把这81中放法的值都求出来,再取绝对值,去掉重复的,看下有多少个数,这个数量就是我们可以称重的可能数了。
然而观察发现a,b,c,d是个3的等比数列,那么我们就可以把这个问题对应到一个三进制的问题。设有一个三进制数S,有4位s4 s3 s2 s1,每位的取值范围都是{0,1,2},那么S的十进制值应该是s4*27+s3*9+s2*3+s1*1,S最大是2*27+2*9+2*3+2*1=80,也即是3^4-1,4位数的能表示的最大值的后继应该是五位数的最小值也就是27*3。取值范围是从0到80,之间的数肯定都能取到,而且也不重复,这是三进制数的规则决定的。
也就是说对于1,3,9,27,如果每个位都能取0,1,2中一个,那么能表示的数的范围是0到80,这81个数。
现在问题是每个位取的范围是-1,0,1,那么能表示的数的范围是多少呢?我们可以做一个一一映射-1映射到0,0映射到1,1映射到2。也就是都减1。那么,对任意一个数s,1对应位的贡献将会减1,3对应位的贡献将会减3,9所对应的位的贡献会减少9,27所对应的位贡献会减少27。合记,每个数s会比原来减少(1+3+9+27)=40。也就是说范围变成(0-40)到(80-40)了,即-40到40。绝对值就是0到40。
最后:砝码问题稍稍扩大一些:要想在天平上称出1到500磅在内的任何整磅数,问最少需要几个多重的砝码?
解:500*2=1000,3^6=729,3^7=2187,所以只要1,3,9,27,81,243,729这些能表示的三进制数是0到2186,每位只能取-1,0,1的话,表示范围变成
0-(1+3+9+27+81+243+729)到2186-(1+3+9+27+81+243+729),即-1093到1093。同理可算出1,3,9,27,81,243能表示的整数范围是-364到364。不满足要求,所最少需要1,3,9,27,81,243,729这些砝码就可以摆出0到1093之间的任何整数,当然也包括1到500了
其实问题就是要几位的三进制数的表示范围的问题,只要考虑最大值,和最小值,中间的值肯定能取到,这是进制数的规律吧