在线时间 479 小时 最后登录 2026-4-13 注册时间 2023-7-11 听众数 4 收听数 0 能力 0 分 体力 7789 点 威望 0 点 阅读权限 255 积分 2922 相册 0 日志 0 记录 0 帖子 1171 主题 1186 精华 0 分享 0 好友 1
该用户从未签到
问题描述】
+ g5 v6 h Y- l- p. p# } 你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
6 L% K0 I' v3 B 那么这套砝码最少需要包含多少个砝码?' `3 z" D, H1 g. @& f, ^ P
注意砝码可以放在天平两边。
4 Z+ {2 ^& x, l' g* ~; B0 c2 M " B" a( @+ m! t! [2 k8 ~
【输入格式】
; }$ h1 R# i; O5 [& |, Y M 输入包含一个正整数 N。
, h' h5 B' [& h4 b: B% P9 Q8 b
4 @* |4 Q- Y* u9 v( c 【输出格式】
/ u4 B+ O9 [/ L) \' I9 e 输出一个整数代表答案。& K6 d1 R9 F3 r; [5 e) U
) E# z% e/ B: P4 X/ f; f' a 【样例输入】+ s5 u2 | @, ]( ]' s
7
: L8 {: ~" T% L2 y: R
, R6 C$ Q5 G. I" f5 U 【样例输出】
6 Y& k0 q/ _" F$ ` 3
8 ^! m4 ^4 f6 e& r: U# M 6 r( K* W, ^8 A0 e! c' D
【样例说明】
3 u' i# A. A. v/ C! v 3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。 n: f* r9 x' C$ Z; b& y/ F
1 = 1;
! R/ {6 D. X3 I+ t4 f: f 2 = 6 − 4 (天平一边放 6,另一边放 4);
8 T' V' F' G- V( a1 r 3 = 4 − 1;! V' i: R5 U9 `, h) T- x
4 = 4;0 C" i' ^ e& h# V8 K2 I
5 = 6 − 1;* G" B7 m2 w$ h/ u! N
6 = 6;7 ~, N ^& o, g' r- @( W( ?& B( F. I% C2 |
7 = 1 + 6;5 _3 V6 ]8 r- C8 x W0 f, M
少于 3 个砝码不可能称出 1 至 7 的所有重量。import java.util.Scanner;
/ @- k. r4 Q% H) K7 h public class Main {
0 V' o/ s$ G3 q% U4 F8 o0 u public static void main(String[] args) { 4 @$ q9 U6 S4 X. M+ A& M' X Z
int n = new Scanner(System.in).nextInt(); 3 t6 V7 b1 i' G R8 X
int maxWeight = 1, minCnt = 1;
Y1 S4 `5 Q; [: ]\" o, z while (maxWeight < n) { 4 }' U4 `5 o. x# I3 h( u+ I
maxWeight = maxWeight * 3 + 1;
o$ s7 n& O$ Y' \ minCnt++; % _0 T5 z- q1 K# y8 ^( P
} 2 o4 a& o# R I: H7 I! O/ A
System.out.println(minCnt);
4 e4 r7 N; j- g* [% q8 F3 F2 G\" X } 4 Q; h; B F4 t. k! G7 E& O8 M/ p
}( D7 ^. K9 G4 z& a' b0 L
复制代码 题解
' w' W5 h9 ^" i! E5 i 如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
" ]! Z( Q) V0 I 此时我们想扩大区间范围就只可以增加砝码
. V" Q9 O8 ~ n5 Y# J 假设增加的砝码重量为 k) t3 [/ e5 c' G: l
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
3 B" Z! e8 D! J' E; V% z 所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
7 C) n$ n* u+ J# ]) h# u* L ; i0 N3 N7 B9 I" ~2 c
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围! I" z! Z/ u) s
; Z v3 D& y. T9 @$ O: y- r9 R 另 n + 1 = k - n k = 2n + 1
2 r2 G3 [% B0 [3 i 那么x + 1可以控制的最范围就是[1, 3n + 1]
) n9 Z. N, b2 m, \9 Z' C* W. E
" q+ n- h, r) {3 l3 \( i 8 `8 E" Z# f7 V
7 W. Y) r4 H% j5 M- Y
zan