前几天看李开复参加的对话节目,当场面试清华博士生,其中有两个题目很有意思。
=================================================================
1、一副扑克片,拿去大小王,剩52张,任意抽两张牌,抽到一红一黑的概率多大?
2、1000个苹果放入10个箱子。客户如果要获得1~1000个苹果中的任意个数,都可以整箱搬,而不用拆开箱子。问世否有这样的装箱方法?
=================================================================
第一题我得出的答案是1/3。
第二题按照节目中的提示,应该是有这样的装箱方法,结果是:
1,2,4,8,16,32,64,128,256,489
我通过程序可以验证1~1000都可以表示成上面几个数的和。
=================================================================
但是当试着用数学归纳法或者级数分解证明其过程时没有思路,百思不得其证明。
不知道有没有兴趣朋友一起讨论。

解决方案 »

  1.   

    [求证过程]
    已知2为公比的等比数列:1,2,4,8,16,...
    首先将前n项相加,得到和为:2**n-1
    第n项与第1项相加得到和为:2**n
    因此任取k个数相加的和属于(2**(n-1),2**n),且和不重复
    前n项数列任取k个求和构成的和的个数为
    Sum = C(n,1)+C(n,2)+C(n,3)+...+C(n,k)+...+C(n,n)泰勒级数展开式为
    f=f0+f1*x**1/(1!)+f2*x**2/(2!)+...+fn*x**n/(n!)+...
    构造函数f=x**n
    采用泰勒级数在x=1处展开则
    f0=x**n=1
    f1=nx**(n-1)=n
    f2=n(n-1)x**(n-2)=n(n-1)
    fn=n!x**0=n!
    f(n+1)=0
    令y=x-1由此
    f=x**n=1+n*y+n(n-1)*y**2/2!+...+n!*y**n/n!
    =1+C(n,1)y+C(n,2)*y**2+...+C(n,k)y**k+...+C(n,n)*y**n
    当x=2时
    2**n=1+C(n,1)+C(n,2)+...+C(n,k)+...+C(n,n)=Sum+1
    因此
    Sum=2**n-1
    即前n项数列任取k个求和构成的和的个数为2**n-1
    且所有的和不同,而第n+1项为2**n
    命题得证。
    =============================================
    晕,浪费我整整一天时间。
      

  2.   


    2^10 = 1024. 1000(DEC) = 1111101000(BIN)
    所以 1000 以内的所有数字都可以用n1*2^0 + n2*2^1+n3*2^2+ ... + n9*2^9 + n10*489 这样的表达式表达。其中 n1...n10 为 1 或者 0。
      

  3.   

    不好意思,我在18楼写错了。里面应该是n9*2^8 而不是 n9*2^9。
    n1*2^0 + n2*2^1+n3*2^2+ ... + n9*2^8 + n10*489