[问题描述]:
 有一只天平和N只砝码,如何设计这N只砝码,才能使这天平能够连续秤出的重量最大?假设砝码的最小单位为1克,秤物时物品放在天平的左边,砝码可以放在右边也可以放在左边,不管放在哪一边只要天平能够平衡就行,物品的重量应是右边砝码总重量减去左边砝码的重量。
输入一个物品的重量,输出其秤重方案。
 [分析与算法选择]:
 这个问题是从一个经典的数学问题变化而来,这个数学问题的大意是:一个物体重40磅,掉在地上后摔成四片,这四片恰好能够作为砝码连续秤出40磅以内的物品的重量,这四片的重量如何?
 (1)如何设计砝码?
 我们先不去看单位,直接用数字来描述。因为要能连续秤出一范围内的值,所以首先要有1,从数学上可以知道,N只砝码本身最大能秤的总重就是这N只砝码的重量和,下面就看如何保证连续的数都能秤出了。设这N只砝码的重量分别为W1、W2……Wn,且有W1<=W2<=……<=Wn, W1=1,下面看W2如何设计。
 如果W2=1,1、2都能秤出;如果W2=2,1、2、3都能秤出;如果W2=3,1可以秤出(W1)、2可以秤出(W2-W1)、3可以秤出(W2)、4也可以秤出(W1+W2);如果W2=4,则2不能秤出;所以W2最大为3(=3*W1)。
 同理可推出W3最大为9(=3*W2);
 ……
 Wn最大为3n-1(=3*Wn-1)。
 设计方案为这N只砝码重分别为:1、3、9、27、……、3^n-1。
 (2)如何根据物品重量得到秤重方案?
    物品(+砝码)         砝码

因为物品固定放在一连(如左边),只要考虑砝码放的情况。任一个砝码都可能有三种状态:一是跟被秤物品放在一起(如左边),二是不放,三是放在物品另一边(如右边)。最后物品的重量等于所有砝码乘上相应系数的和。这个系数可能是:-1、0、1。

先来看3只砝码时各种重量的称法,如下表所示,其中-1表示砝码放在物品一边、0表示砝码不放进天平、1表示砝码放在物品另一边,如果每一位加1后便只会是0、1、2这3个数字中的一个,所以可以方便地跟三进制数对应起来:

物品重量

3只砝码

每一位加1

9

3

1

三进制数

十进制数

1

0

0

1

112

14(=1+13)

2

0

1

-1

120

15(=2+13)

3

0

1

0

121

16(=3+13)

4

0

1

1

122

17(=4+13)

5

1

-1

-1

200

18(=5+13)

6

1

-1

0

201

19(=6+13)

7

1

-1

1

202

20(=7+13)

8

1

0

-1

210

21(=8+13)

9

1

0

0

211

22(=9+13)

10

1

0

1

212

23(=10+13)

11

1

1

-1

220

24(=11+13)

12

1

1

0

221

25(=12+13)

13

1

1

1

222

26(=13+13)

由上表我们可以总结出这样的计算方法:对于给定的物品重量,先确定它最多用到多大的砝码,假定是3n-1,那么先将这个物品的重量加上1、3、……3n-1,得到一个数,再对这个数进行除3取余运算,当余数为0时表示相应的砝码跟物品放在一起,余数为1时表示相应的砝码不放,为2时表示放在物品的另一边。

天平秤重问题(三进制)相关推荐

  1. 【蓝桥java】进制与整除之天平秤重

    题目: 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量. 如果只有5个砝码,重量分别是1,3,9,27,81 则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中). ...

  2. 蓝桥杯数学题:天平称重:巧用三进制。基于python3.9的原创代码

    用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量.如果有无限个砝码,但它们的重量分别是1,3,9,27,81,--等3的指数幂神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右 ...

  3. (转载)二进制与三进制的妙用

    原网址:http://www.cnblogs.com/heaad/archive/2010/12/22/1913733.html 先来思考几个问题,并不难,各位大牛应能秒杀: 1. 小明是个卖苹果的, ...

  4. 牛客寒假算法基础集训营2:处女座的砝码(初遇三进制)

    牛客寒假算法基础集训营2:处女座的砝码(初遇三进制) 这是刷到牛客寒假集训营2里面的C题-处女座的砝码才知道的 首先,了解一下知乎上一位大佬的想法 地址:https://www.zhihu.com/q ...

  5. [清华集训2016]石家庄的工人阶级队伍比较坚强——三进制FWT

    题目链接: [清华集训2016]石家庄的工人阶级队伍比较坚强 题目大意:有$n=3^m$个人玩石头剪刀布,共$t$轮游戏,每轮每个人要和包括自己的所有人各进行$m$次石头剪刀布.每个人在$m$轮中的决 ...

  6. hdu3001(三进制状压)

    题目大意: 现在给你一个有n个点和m条边的图,每一条边都有一个费用,每个点不能经过超过两次,求所有点至少遍历一次的最小费用 其中n<=10 m没有明确限制(肯定不会超过1e5) 一看到这个数据范 ...

  7. Travelling (三进制+状压dp)

    题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 inline ll rea ...

  8. Happy Number 十进制转特殊三进制

    题意 : 开心数仅由2,3,6组成,求第n个开心数是多少 思路 : 并非朴素十进制转三进制,2,3,6,22,23,26-,22在三进制中是00,23则是01,说明这里的三进制应该是0,1,2,00, ...

  9. 【PAT甲级 十进制转十三进制】1027 Colors in Mars (20 分) Java版 5/5通过

    题目 是个水题,一次通过. 这道题的大意就是:给你输入3个十进制的数,让你转换成3个十三进制数.在转换的时候,注意不足两位的要用0补全两位. 小坑 提交之前,想起来自查一下我的convert(int ...

最新文章

  1. php学习_第6章_PHP的语言结构
  2. python glances来监控linux服务器CPU 内存 IO使用
  3. 如何让机器说话更像人?清华和京东的三位大牛给出答案 | CCF C³
  4. Linux重定向指令
  5. SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
  6. 空间数据索引RTree完全解析及Java实现
  7. java 中字符串比较方法_java中常用的字符串的比较方法(两种)
  8. 动态规划训练13 [Catch That Cow poj3278]
  9. 项目是采用目前比较流行的 SpringBoot/SpringCloudAlibaba构建新零售微服务电商项目
  10. TensorFlow保存或加载训练的模型
  11. matlab求机制,[转载]文化算法 matlab
  12. Struts2简单入门实例
  13. 记录免费的学习资源-视频教程
  14. 倍福BECKHOFF PLC:自动化编程入门1
  15. 游戏服务器架构通识 BigWorlds丨skynet
  16. 哈密顿正则方程和哈密顿-雅克比方程
  17. 韩语在线翻译图片识别_3个OCR文字识别工具,最后一个许多人都不知道!
  18. 虚拟机安装过程中发生该错误:“客户机操作系统已禁用cup”问题解决方法【全】
  19. Vue中computed,watch,Methods的比较
  20. 获得当天的 零点 和 当天的最后 一秒的时刻

热门文章

  1. Jdbc访问mysql查询聚合函数_JDBC连接参数设置对Oracle数据库的影响分析
  2. 2021云上架构与运维峰会将于12月4日在上海举办,五大精彩看点不容错过
  3. 钉钉宜搭入选Forrester《中国低代码平台市场分析报告》
  4. 微服务引擎的线上流量治理最佳实践
  5. DataWorks搬站方案:Azkaban作业迁移至DataWorks
  6. 自研云原生数据仓库AnalyticDB再破权威评测TPC-DS世界纪录!
  7. 制作精良、意犹未尽的异色推理小剧场《Tangle Tower 缠结塔》
  8. 只要你懂为啥有人爱砍传奇,就能明白《逃离塔科夫》为何会成功
  9. 使命召唤手游迎来欧阳娜娜,这阵容够豪华,玩家期待吗?
  10. 第十届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)