- 在线时间
- 479 小时
- 最后登录
- 2026-5-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7813 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2931
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1173
- 主题
- 1188
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
4 |; |$ _* |2 r6 |你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
$ z3 r' H) b6 f0 k) K6 N那么这套砝码最少需要包含多少个砝码?
! d: W }6 n4 _- Y+ j注意砝码可以放在天平两边。8 ~: ~% p) V& }, {, f; O0 w& t( G! e
1 G `+ Q8 I7 z: v9 e$ z: X; J【输入格式】0 Y5 k8 p3 s# D: f
输入包含一个正整数 N。! e* I4 h6 I. Y- d8 ]
" e+ b8 Z) e) B
【输出格式】
- X8 N$ s+ Y, ?$ o9 n) h; W输出一个整数代表答案。. q/ D- |' U+ }# ^, @; S0 L
8 y8 b6 m7 k8 W) n0 i
【样例输入】- \/ T0 E" A9 s' ]. Y1 v. V
7
/ x M& M/ c. o: u) O" Z# r- b
5 {* U% t7 y1 i$ A【样例输出】
6 k) [) z3 |6 r: F# a3- t9 i. \- Y. v) c2 A) @0 P# Z
' x) {% m( h l+ @, |【样例说明】7 m5 e w; t; D" b7 a: u8 ?6 \
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
: Y( s: m6 W# g1 = 1;
. T! e, `- d7 Y6 H) z3 r2 = 6 − 4 (天平一边放 6,另一边放 4);2 F/ f& G4 q8 m. M
3 = 4 − 1;# j- z! v1 V5 g5 m) w: ]8 l
4 = 4;; W, F1 T$ G8 i& }
5 = 6 − 1;# T: G0 y8 v% l& X& U& p
6 = 6;4 n6 G4 x" p- d5 ~4 Y9 j
7 = 1 + 6;
+ f2 n \/ P! ~: ]. i少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; + t( ]( Z& @3 W. S) [. X! s& w1 ~3 D
- public class Main {
. @; B! R- s3 u& X - public static void main(String[] args) { % a- G; A, Q) f/ `1 _
- int n = new Scanner(System.in).nextInt();
W; X+ J& D$ ` a/ [ - int maxWeight = 1, minCnt = 1; , j, a8 C* Z( E5 N) F. E, A
- while (maxWeight < n) {
! h% j, X* F0 J6 y - maxWeight = maxWeight * 3 + 1;
9 B: T- g) {! W6 o9 d - minCnt++; A5 {2 S- e l% t) n
- } ) z* I5 e2 T. R: y# b
- System.out.println(minCnt);
) W/ w% _) [7 N( O: i\" A1 Q - }
' ^9 g; T) [: X% f* i) T - }
2 l; |/ @* P% x8 e# h% B
复制代码 题解4 @ U' y8 c+ D: ^( P; q7 |
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个& |( B5 F+ R! h3 _# M7 k1 V9 }
此时我们想扩大区间范围就只可以增加砝码" q1 J) h% o; `- N' m7 |
假设增加的砝码重量为 k
7 N- z, l2 u" g8 q因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
+ t# v4 b/ P" s: G9 A0 \/ c s: H所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
* N% S. m" Y. p0 f$ W3 G
' N% l+ {* M. }; d+ ]! I% D: _- e让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围) p" G. {5 j# g$ X" j- g6 A
& |& G1 z- j) k1 o- j; `8 a$ B: @: [另 n + 1 = k - n k = 2n + 1
' \. R9 ~4 V. f4 E) x6 F3 g9 P那么x + 1可以控制的最范围就是[1, 3n + 1]- P- K9 ?- m2 `, Z5 M
2 z' y7 a% z+ f2 V
% E! o. N" i8 \( l1 f
. j( V! ]7 X; d, @6 R& e1 s6 ? |
zan
|