Java教程

至少要几个砝码,可以称出 1g ~ 40g 重量

本文主要是介绍至少要几个砝码,可以称出 1g ~ 40g 重量,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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


1. 问题描述

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

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


2.解题关键

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


3. 题解

AxA_xAx 表示第 xxx 块砝码的重量。

  • 第 1 块砝码 A1A_1A1:为了称取重量 1g ,必须拥有一枚重量为 1g 的砝码,即 A1A_1A1 = 1。目前可以称 {1, 2, 3}。
  • 第 2 块砝码 A2A_2A2:砝码组 [1,A2][1, A2][1,A2],可以称出 {1,A2−1,A2,A2+1}\{1, A_2 - 1, A_2, A_2 + 1\}{1,A21,A2,A2+1}。为了称取重量 2g,显然有 A2A_2A2 - 1 = 2,即 A2A_2A2 = 3。目前可以称 {1, 2, 3, 4}。
  • 第 3 块砝码 A3A_3A3:砝码组 [1,3,A3][1, 3, A3][1,3,A3],可以称出 {1,2,3,4,A3−4,A3−3,A3−2,A3−1,A3,A3+1,A3+2,A3+3,A3+4}\{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\}{1,2,3,4,A34,A33,A32,A31,A3,A3+1,A3+2,A3+3,A3+4}。为了称取重量 5g,显然有 A3A_3A3 - 4 = 5,即 A3A_3A3 = 9。目前可以称 {1, 2, 3, 4, …, 13}。
  • 第 4 块砝码:同理,第 4 块砝码 A4A_4A4 = 27,可以称出 {1,2,3,4,...,40}\{1, 2, 3, 4,..., 40\}{1,2,3,4,...,40}。总共需要 4 个砝码。
这篇关于至少要几个砝码,可以称出 1g ~ 40g 重量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!