- 在线时间
- 479 小时
- 最后登录
- 2026-5-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7813 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2931
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1173
- 主题
- 1188
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
' g. E* b7 k8 e9 O! [' G" _( \& m! `你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
+ t& c% e3 ^" Z4 L. v5 U$ H那么这套砝码最少需要包含多少个砝码?
. I* `8 Q) t' L- C注意砝码可以放在天平两边。
/ b% G1 m- Z4 r( s: d- b" K# V; E0 F
【输入格式】8 P2 `2 E" e. ~/ A& N4 p
输入包含一个正整数 N。
/ E4 C- _' g; ?0 c$ ?$ i# M
8 B1 Q5 {1 L! V/ r" K【输出格式】2 e' Z4 H5 ~+ h1 \* G7 y
输出一个整数代表答案。
" j3 S" s$ A2 w( M2 f; ^( w
/ ^+ E$ o1 f+ W: ]/ e# V【样例输入】
4 e& [5 }$ M* e- }& a% C7& O: M$ q1 K% c( a% I
+ p. L6 }5 z. h7 P9 N; }- n【样例输出】
) d: {% [9 q# l* D! ]' E* g3% {& J# Z% `( S6 e( l
3 j$ C. V. w3 J. s【样例说明】
/ ]9 N$ L$ A1 T3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
4 R3 a8 `$ D4 a+ W; g7 d1 A! b1 = 1;
+ V; }8 ^4 v. k2 = 6 − 4 (天平一边放 6,另一边放 4);
/ a+ t' k6 m m# k" |3 = 4 − 1;3 n' J* ^9 Q% M C
4 = 4;7 e9 Q1 c7 B. \! \7 e' @
5 = 6 − 1;
/ G5 g" ~$ K Z+ y$ ?6 = 6;
s0 q; x8 I0 }* H/ a7 = 1 + 6;1 l% B) ^- c& V- F* U0 m M
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; , c4 E7 r/ r' e, @ F- T+ Q/ o* I
- public class Main {
# M7 R1 r- c; Q J' C$ x J9 W: [ - public static void main(String[] args) {
; g9 S; n4 _7 {0 S9 D - int n = new Scanner(System.in).nextInt();
2 e0 S4 b3 C$ ^) C - int maxWeight = 1, minCnt = 1; 9 r& E6 K( g- Y' G: a- v$ A+ m
- while (maxWeight < n) {
8 h2 {\" i. f$ a( S. e, `\" r; A - maxWeight = maxWeight * 3 + 1;
: P' Z* u# o9 k - minCnt++; 9 j\" v. y& m( u4 \\" R% z* C5 B
- } 6 I+ T6 }, w! N, V! e4 \ n
- System.out.println(minCnt);
u/ v+ O* U! P! C, c5 p\" x) p) z - }
4 b* G3 ] Z' D' m2 X3 B+ G - }
6 d3 G) D+ N% K
复制代码 题解0 k* \2 P3 A, v3 L2 L
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
2 X9 ~* p0 _% a) Y' h! C% |此时我们想扩大区间范围就只可以增加砝码+ d* ]! ]& _: x% d% l
假设增加的砝码重量为 k s- V7 U" i! Y8 e8 C7 A7 N
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作; n' b- a/ H5 |6 ]
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了4 Z: C: d& d' x1 V
& T; `2 g: a% Q# h
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围2 p2 I. m. Y5 I+ _4 d! i! k
8 y0 W- n: i9 D/ H
另 n + 1 = k - n k = 2n + 1
0 }% D3 _) T7 F9 K5 {那么x + 1可以控制的最范围就是[1, 3n + 1]% W3 @) L k j7 k: G: f
% ^4 T% i! `- [" p E
. G: {6 Z a1 y& X
0 m: d: Z- S: r* B6 [9 y' ` |
zan
|