zoukankan      html  css  js  c++  java
  • 用最少的砝码称出1到100克的物品

    题目描述:

    给定一个天平,用最少的砝码称出1到100克的物品,砝码重量任选

    分析:

    假设物品放在右边,砝码可以放在左边或者右边,那么有:放在左边砝码的重量 = 放在右边砝码的重量 + 物品的重量,即 放在左边砝码的重量 - 放在右边砝码的重量 = 物品的重量。假设砝码放在左边用‘+’表示,放在右边用‘-’表示。那么容易知道±aiai取‘+’、‘-’或不取,三种情况表示所有可能的情况。下面给出一种方案:1、3、9、27、81。

    容易知道4个砝码±ai最多有34 = 81中可能的值,所以4个砝码不可能称出1到100所有的值。下面说明1、3、9、27、81的正确性。

    对于30、31、32...3n,能够称出1到(3n+1 - 1)/ 2之间的任何一个值。

    证明(数学归纳法):

    n = 0 时能称出值 1、2。

    假设 n = k - 1时成立,即对于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值。

    当n = k时,由于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值,所以将每个砝码在天平中的位置对换会得到-1到-(3k - 1)/ 2,同时将3k放在左边得到(3k - 1)/ 2 + 1到3k - 1,又由于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值,所以将3k放在左边会得到3k + 1到3k + (3k - 1)/ 2 = (3k+1 - 1)/ 2

    当n = k时成立。

    得证。

    容易证明,除了1、3、9、27、81,1、3、9、27、60...80也都是可行的解

  • 相关阅读:
    深入理解Java8中Stream的实现原理
    RocketMQ的顺序消费和事务消费
    Java 性能调优小技巧
    类加载机制基础
    十大经典排序算法
    分布式锁的几种常用实现方式
    python之接口开发
    python之urllib模块和requests模块
    python之time模块和hashlib模块
    python之os和sys模块的区别
  • 原文地址:https://www.cnblogs.com/daijinqiao/p/3409642.html
Copyright © 2011-2022 走看看