- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】 r6 b; v- Z- k3 S
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。 Y- ^/ c7 U+ C; I- o: ^5 T/ P# B
那么这套砝码最少需要包含多少个砝码?
! r' o9 w3 p. R2 ? C注意砝码可以放在天平两边。
. u3 W* j! B; v' B' i, Z5 Y0 m' j" j% I) ]; s: n
【输入格式】. ?# D! t3 v7 f% K" Z- M' |
输入包含一个正整数 N。' J0 D; E4 D6 H! t' b
' g" j2 L& _7 D& e4 b
【输出格式】
5 t* c0 r# v5 Q, V% w输出一个整数代表答案。
( Y4 n# s6 A9 t8 B8 j p+ j, v' n, S" T5 O: c4 G2 m) ]
【样例输入】8 z6 E- M! Y% V9 Z; |$ @4 |
7
* h3 v7 B, A; a% I& h8 X; M3 @0 _7 b3 K
【样例输出】- P* m; T( q/ P" k& x! p
34 F1 H% N- ]6 z5 o" c! k% \
8 g4 _! X% ^; O, w. o' D3 \【样例说明】! b1 V4 T0 S: _: v9 q6 s2 a0 l
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。' N* Q7 [& q4 J3 G) P ^
1 = 1;
Z; u( [) C+ ^. D' R' {* z2 = 6 − 4 (天平一边放 6,另一边放 4);
+ X' _) H# P& T% E) P1 w$ {3 = 4 − 1;( d' z* b/ C0 \# e/ m
4 = 4;1 O7 G; V0 i6 L% C& I! u. `8 F
5 = 6 − 1;
+ [2 s' J) w& D; X, d6 = 6;
. X- F- d7 y+ D v* f' y: b7 = 1 + 6;2 T% r4 O2 S6 N" t
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner;
% @9 j. L6 W! j. m; u/ `8 a9 L - public class Main { - {3 V* R- A( d* e; } _
- public static void main(String[] args) { : G! M0 H- ~& { k1 G- P) L
- int n = new Scanner(System.in).nextInt();
; P& ?$ y* ]7 o* ?9 } - int maxWeight = 1, minCnt = 1;
* h+ }9 z! P6 h6 q. d/ R - while (maxWeight < n) {
2 A' `( P6 R( K; ]- L5 M - maxWeight = maxWeight * 3 + 1; 7 ~% N7 z; H\" x0 E
- minCnt++; ' P( N; `( I% S6 M9 i+ @- t! a' |
- }
2 n' p9 T% c\" @/ B - System.out.println(minCnt); . \2 m9 Y# ?6 h. i
- }
1 L7 t% L+ e& A7 i0 a4 P- k - }# B, E: z d$ E$ a ^6 z* G
复制代码 题解
' y5 N" Z1 C. Z l" y a# G如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个1 p7 z. B9 _' ^3 P( ` m) n& ]
此时我们想扩大区间范围就只可以增加砝码1 w8 ?5 K1 _* ?2 D4 o2 r( y
假设增加的砝码重量为 k# y3 M( y) u. i4 T, t5 j
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作3 {. i- o* V- B; b, t6 M! \
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
( i" {9 S" c7 X& C% A5 U" H% J5 d
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
5 _4 x- C; p V
4 K9 v- N: V+ B, x j( a另 n + 1 = k - n k = 2n + 1; K& U$ o3 m7 C
那么x + 1可以控制的最范围就是[1, 3n + 1]
, @4 a9 A/ z; V0 d" Q ]4 K o
, g. y3 h# g9 I3 ^# O5 c2 q: @8 I3 S) P
2 c6 \3 M9 W _% B8 T
|
zan
|