- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
0 }: J" V* b* S' }* V+ A! v你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
3 x7 @) t7 \) W) ^5 }那么这套砝码最少需要包含多少个砝码?
' G v8 _% B" a# {$ M' k注意砝码可以放在天平两边。
/ o! [- e+ f5 G& p9 e1 w$ N, x$ ^
# E) H+ N& _$ _8 r& J# Y【输入格式】, O1 w& A/ [' m5 Y Y, }
输入包含一个正整数 N。. _9 N8 O& Z! Z9 B6 H
d5 @& a! p7 q) R! B/ q【输出格式】7 P3 H; C$ N9 f. k! \
输出一个整数代表答案。& c/ q9 V! `& K
' o, K, H& P: H6 X7 B【样例输入】) z3 \. P! E/ J ^( v6 ]
7; z6 Y2 c3 ~/ h% p
% a- ]# Q" B7 D0 f. {" x0 T" v* S【样例输出】7 I3 b% o2 ? J
3' G' V4 f7 T. N8 s7 {- g! l9 `- i
) p% [- ]8 F; ]4 l* d6 K3 ~
【样例说明】
" w; i, ]# B5 X! q/ {1 G) v3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
% ~: l, o- D4 |. a1 = 1; {2 Q: C# |4 n8 V! m! ~$ L
2 = 6 − 4 (天平一边放 6,另一边放 4);
+ c7 b) U- b, y* e3 = 4 − 1;
! e7 W) f* I9 z: w/ n4 = 4;
9 R* }8 y8 X0 c( ^5 = 6 − 1;
4 t7 F# W! ^% u# R e8 R3 E2 u" c1 k- }6 = 6;- G; x' J1 O) a5 h2 A8 P7 M$ Q3 P# P
7 = 1 + 6;/ E7 `- p4 g" F7 G8 S; Y4 o1 g6 { B
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; - y( L) [: L. V5 j. q
- public class Main { ( \$ w8 k7 K# ?
- public static void main(String[] args) { ; g% J8 ~+ v\" Q S
- int n = new Scanner(System.in).nextInt(); $ z& N+ G! F. L; q$ O6 @
- int maxWeight = 1, minCnt = 1;
3 o6 Z% t: N0 {2 `3 S, S2 |% [0 Y - while (maxWeight < n) { + P5 r. `+ X! o( \9 }# ^
- maxWeight = maxWeight * 3 + 1; 7 U- u8 a& ]( Z6 G* \
- minCnt++;
2 |( c, `\" F1 r - }
; K F% a' k& i. O\" w- o7 d: T - System.out.println(minCnt);
: h; Y0 U8 z0 `- m2 f - } ; O2 l4 _! {\" O7 H* m
- }
$ P- ~( l/ a \/ q( Z; s' g
复制代码 题解8 N& j/ N& t5 `# Z$ K0 U( {
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
: Q6 P. t9 _5 x9 _: I- b此时我们想扩大区间范围就只可以增加砝码( t4 Y* q5 ^. ~( x
假设增加的砝码重量为 k: t3 D% R ]8 Z( ?
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
9 h9 c& x. w& E* }6 B) P+ ~所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
) j* B( m- D+ n4 [3 R
+ S: \7 R6 ^4 W让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围+ P& r- r; S/ @# K# O0 ]
6 q1 G) Z5 k$ ]) m) C9 v5 n8 ^另 n + 1 = k - n k = 2n + 1
5 M+ c: g- z: G! a- C4 i那么x + 1可以控制的最范围就是[1, 3n + 1]$ t! j& C' o2 j2 ^
- K; ~; A w& s# r0 o
( | F- Q1 q! l- T1 S$ r$ D+ m. Q
|
zan
|