请点赞关注,你的支持对我意义重大。

Hi,我是小彭。本文已收录到 GitHub · AndroidFamily 中。这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] 带你建立核心竞争力。

前言

大家好,我是小彭。

在计算机面试中,逻辑类题目是规模以上互联网公司的必考题。由于题目花样百出,准备难度较大,题海战术可能不是推荐的做法。在这个系列里,我将精选十道非常经典的逻辑题,希望能帮助你找到解题思路 / 技巧。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。


系列文章:


1. 问题描述

给定一台天平,至少要几个砝码,可以称出 1g ~ 40g 这 40 个重量?

这个问题等同于 “德·梅齐利亚克砝码”问题:一位商人有一个 40 磅的砝码,由于跌落在地而碎成4 块。后来,称得每块碎片的重量都是整磅数,而且可以用这 4 块来称从 1 ~ 40 磅之间的任意整数磅的重物。(引用自法国数学家 G.B.德·梅齐里亚克)问这 4 块砝码碎片各重多少?


2.解题关键

砝码的和与差: 假设有 m 和 n 两个砝码(m > n),除了可以称出 m + n 的重量外,还可以称出 m - n 的重量。


3. 题解

令 $A_x$ 表示第 $x$ 块砝码的重量。

  • 第 1 块砝码 $A_1$:为了称取重量 1g ,必须拥有一枚重量为 1g 的砝码,即 $A_1$ = 1。目前可以称 {1, 2, 3}。
  • 第 2 块砝码 $A_2$:砝码组 $[1, A2]$,可以称出 ${1, A_2 - 1, A_2, A_2 + 1}$。为了称取重量 2g,显然有 $A_2$ - 1 = 2,即 $A_2$ = 3。目前可以称 {1, 2, 3, 4}。
  • 第 3 块砝码 $A_3$:砝码组 $[1, 3, A3]$,可以称出 ${1, 2, 3, 4, A_3 - 4, A_3 - 3, A_3 - 2, A_3 - 1, A_3, A_3 + 1, A_3 + 2, A_3 + 3, A_3 + 4}$。为了称取重量 5g,显然有 $A_3$ - 4 = 5,即 $A_3$ = 9。目前可以称 {1, 2, 3, 4, ..., 13}。
  • 第 4 块砝码:同理,第 4 块砝码 $A_4$ = 27,可以称出 ${1, 2, 3, 4,..., 40}$。总共需要 4 个砝码。

参考资料

我是小彭,带你构建 Android 知识体系。技术和职场问题,请关注公众号 [彭旭锐] 私信我提问。

至少要几个砝码,可以称出 1g ~ 40g 重量的更多相关文章

  1. 一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克

    public static void main(String[] args) { List<Integer> list = new ArrayList<>();//记录每组数的 ...

  2. XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?

    题目描述 小明有一架天平,小明想称出1∼n 克的物品,请问最少需要几颗砝码? 比如小明想称出1∼4 克的物品,需要2颗砝码,为1和3克. balance 输入 第一行是一个整数T(1≤T≤10000) ...

  3. 求用1g、2g、3g的砝码(每种砝码有无穷多个)称出10g的方案有几种

    #include <iostream> using namespace std; // ; // sup是保存多项式的数组,sup[n]中的值代表指数为i的系数 ,下标i是x的指数 // ...

  4. 设计一套砝码要求能称量出1 ~ 100g之间的任意重量,请问至少需要多少个砝码?以及每个砝码各自的重量是多少?

    解析: 1g => 1g 2g => 1g 1g => 1 ~ 2g之间的重量 => 1g 2g => 1 ~ 3g之间的重量 4g => 1g 2g 1g =&g ...

  5. HDU5616 天平能否称出物体重量问题 01背包变形或者折半搜索

    //hdu5616 void solve1(){dp[0]=1;for(int i=1;i<=n;i++){for(int j=INF;j>=val[i];j--){dp[j]|=(dp[ ...

  6. NOI题库--砝码称重V2(多重背包2^n拆分)

    以前只会写多重背包的原版,渣的不行,为了做此题不得不学习了一下,发现其实也不难,只要理解了方法就好多了(PS:其实和倍增挺像的) 8756:砝码称重V2 总时间限制: 1000ms 内存限制: 655 ...

  7. Codevs No.2144 砝码称重2

    2016-05-31 22:01:16 题目链接: 砝码称重2 (Codevs No.2144) 题目大意: 给定N个砝码,求称出M的重量所需砝码最小个数 解法: 贪心 使砝码数量最小,当然是每个砝码 ...

  8. P2347 砝码称重 (01背包)

    题目描述 设有 1g1g1g . 2g2g2g . 3g3g3g . 5g5g5g . 10g10g10g . 20g20g20g 的砝码各若干枚(其总重 ≤1000 \le 1000≤1000 ), ...

  9. 洛谷P2347 砝码称重 【多重背包】(方案数)(经典)

    题目链接:https://www.luogu.org/problemnew/show/P2347 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入 ...

随机推荐

  1. 25.MYsql数据库管理

    MYsql数据库管理 目录 MYsql数据库管理 数据库基本操作 库和表 常用的数据类型 查看数据表结构 查看当前服务器的数据库 查看数据库中包含的表 查看表的结构 SQL语句 创建及删除数据库和表 ...

  2. Java注解和反射

    1.注解(Annotation) 1.1.什么是注解(Annotation) 注解不是程序本身,可以在程序编译.类加载和运行时被读取,并执行相应的处理.注解的格式为"@注释名(参数值)&qu ...

  3. c# sqlsugar,hisql,freesql orm框架全方位性能测试对比 sqlserver 性能测试

    在2022年1月份本人做过一次sqlsugar,hisql,freesql三个框架的性能测试,上次主要是测的sqlserver下的常规插入(非bulkcopy的方式数据插入),hisql与目前比较流行 ...

  4. Redis基础与性能调优

    Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用. Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hyperloglogs等. ...

  5. kubectl 最新常用命令 --V1.24版本

    Kubectl 自动补全 BASH source <(kubectl completion bash) # 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completi ...

  6. SpringMVC-01

    1. 概述 1.1 概念 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 项目请求响应架构演进: 软件三层 软件三层 ...

  7. 任何快速查询IP归属地

    最近公司项目需要做一个IP归属地查询的功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的IP归属地API非常符合我的开发需求.   ...

  8. MySQL 啥时候用表锁,啥时候用行锁?

    大家好,我是树哥. MySQL Innodb 的锁可以说是执行引擎的并发基础了,有了锁才能保证数据的一致性.众所周知,我们都知道 Innodb 有全局锁.表级锁.行级锁三种,但你知道什么时候会用表锁, ...

  9. salt stack学习笔记

    saltstack运行模式: local master/minion salt ssh saltstack三大功能 远程执行命令 配置管理(状态管理) 云管理 安装: master  salt-mas ...

  10. python 生成Windows快捷方式

    此处以虚拟机镜像快捷方式为例 link_filepath:快捷方式的生成路径 win32_cmd:需要执行的应用程序 arg_str:exe的参数 快捷方式的目标:由win32_cmd + arg_s ...