- 在线时间
- 472 小时
- 最后登录
- 2025-9-5
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7689 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2887
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1161
- 主题
- 1176
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】$ Y5 Z2 B: \ f
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
5 Q: W1 H. x; _4 ]7 @6 Z( S那么这套砝码最少需要包含多少个砝码?
+ y. ~$ A" U7 z/ Z- F注意砝码可以放在天平两边。
! a7 s) J" B3 Z
! k+ h" l1 x/ F) D. g7 J【输入格式】; \% K9 ?. h& Q8 V- G
输入包含一个正整数 N。; Y2 h$ D" @0 V3 [
$ `& \% F. A" k7 i【输出格式】8 @8 ?; B/ [, f a6 d
输出一个整数代表答案。: j; o* P$ j& J) P+ }
( \0 ], \) ~( R# }: z: V
【样例输入】
$ P; b1 \* x/ g& m" G8 f) y7
8 p3 e# _# U, Y: t& c3 Z+ ?! T
' t& q# C2 M5 p7 }2 P: w【样例输出】# t1 [4 m) q- N: w" d
3
) v! L% T2 p: ]0 e0 M9 h
0 E: G5 b* C$ T" ^1 j5 F% y【样例说明】1 ?; u5 ~3 \' n+ `7 x5 U
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。4 W8 Q: q# l* K8 T- X2 @' J1 \
1 = 1;
3 |! d4 [5 v. b( \) R2 = 6 − 4 (天平一边放 6,另一边放 4);1 `" S: ?! x- D7 _, Z h2 u3 M
3 = 4 − 1;8 ? h. d' a f& r5 y8 J
4 = 4;
K7 l0 ]# J1 P9 `5 = 6 − 1;" ^& y B7 p; e6 m
6 = 6;: R9 e8 c0 E1 T+ F+ X
7 = 1 + 6;' I0 y/ E N9 u' |, h' q
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; $ ^! f5 G/ E/ v% Q: Q; Q
- public class Main { ! w. b$ ]- Y2 B
- public static void main(String[] args) { ; v3 |2 a4 D: g* }' C
- int n = new Scanner(System.in).nextInt(); ! X$ R$ h2 b) m\" i, P, K2 P
- int maxWeight = 1, minCnt = 1;
]\" _) K! i4 w+ l - while (maxWeight < n) { ( y$ D( }5 v$ V
- maxWeight = maxWeight * 3 + 1; 1 t+ w( D3 |& F- J
- minCnt++; 5 {, A1 r\" c! G! E
- } 0 r5 t/ _5 E3 @; \6 S) C
- System.out.println(minCnt);
\" e9 k9 W. |/ g\" _* O' u! R0 B - }
( D: I0 @8 c* m6 U* v+ V4 m - }# V\" D\" z\" J+ `9 {; D
复制代码 题解2 F, Y- G, ^& c3 c. V% `7 d3 L
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
/ R* I( C- C8 x此时我们想扩大区间范围就只可以增加砝码4 u# `* H! I9 q# R3 r1 F7 ^! _# W
假设增加的砝码重量为 k
( m8 o1 c" X" \& l! e, v因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
- Y; G/ P8 [4 B+ A; i7 @2 u/ |所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
0 L" K2 n; c' a9 F7 V5 s0 i" x' ]
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
6 i7 c7 A# m! G# r v, I$ t; {4 g2 |0 {# d' G
另 n + 1 = k - n k = 2n + 11 q# m: v: [3 R% Z& ]! Q/ T, ]
那么x + 1可以控制的最范围就是[1, 3n + 1]8 R# W# T; h, e* b
2 d, Z( E, |. [7 @! V& \* K
' H! C, g8 K: F7 B1 S. n) Z! ?" {) K O5 a5 R% V* ?
|
zan
|