- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
7 c" d- a$ d) `: g你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
E1 N/ y6 `( o7 P* R那么这套砝码最少需要包含多少个砝码?; Q; _. K" [$ p D2 o' c5 Z1 v( O
注意砝码可以放在天平两边。
( }9 r* l: k; E+ j7 r" D" g; X3 n _0 B# A/ z0 \2 n" N
【输入格式】
8 G) k& X, j4 O& v1 z$ c输入包含一个正整数 N。6 R$ F+ N s ~3 T
2 J# M& D& _5 I! l& l
【输出格式】3 {% @. S0 v. {& { ^
输出一个整数代表答案。
- ]* }" d% R* H. R6 Q- S; H7 e& W. Z2 E. ~; Q. o( z
【样例输入】
9 ?$ S" k: L3 p70 f; v; n0 p. A* I# h
+ e5 \ Z7 R( y6 ?【样例输出】- `! N1 V2 }. t3 V
3/ F6 z! A* e. h2 K
- E2 H0 R. u* e5 t. K$ j- ~& N; R( \' A【样例说明】8 o2 a: C8 W0 A* |# H w
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。 S% i7 J0 d/ P; v) H
1 = 1;* w3 ~- g7 a$ s& l2 {7 N7 d- k
2 = 6 − 4 (天平一边放 6,另一边放 4);
% Q* v! m$ P! f6 v; d3 g S* }( A3 = 4 − 1;
, w3 A1 x# Z1 z) N; f' P4 = 4;, ]9 j9 m) O1 ?7 g9 ~% M
5 = 6 − 1;
: O7 Y/ J `1 F6 = 6;2 G& a8 `2 \7 ^6 y3 p/ K* l% {4 B" o9 [
7 = 1 + 6;
" v6 ~% e/ v( v9 [( A% R! L; @7 N少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; \" O [' A9 [7 Z8 P ~& V# I
- public class Main { # T* Z8 w4 V4 D
- public static void main(String[] args) { 1 h9 o/ M$ y2 n/ c8 G$ j3 u
- int n = new Scanner(System.in).nextInt();
3 K! Z3 S r6 V7 u3 t# B g - int maxWeight = 1, minCnt = 1;
3 K/ b+ i7 P; n3 y\" | - while (maxWeight < n) {
+ A4 S' R/ |+ m6 g! {\" q - maxWeight = maxWeight * 3 + 1; # b2 k8 C7 S0 c$ u3 F, N' d2 V+ I
- minCnt++; # A7 ]* N4 C# N+ k' }: E
- }
2 `6 H- S# u5 G. q( B$ v - System.out.println(minCnt);
: @3 {2 O; Y: K% @& I$ T& O q& M - }
/ K7 m- p! q$ a( N7 u( p- q8 [ - }
, y. e4 i3 K\" j$ v! i; y
复制代码 题解0 E7 I& c+ Y1 ?# z8 N
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
. ?7 w9 |( B( y' q# B& D: G此时我们想扩大区间范围就只可以增加砝码
& ?3 R9 L& H6 X1 y假设增加的砝码重量为 k' a1 R; E. O$ D3 h
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作 ^ C$ L3 g' D! z" `
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了& a8 J& Q- K5 b
: v7 M* Z2 f8 u; H2 D
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
7 {- t3 C! N1 b9 C, d' M4 ~) ^2 E% l& A- ^
另 n + 1 = k - n k = 2n + 1
: P' S* K3 i2 D. X8 h4 M$ r那么x + 1可以控制的最范围就是[1, 3n + 1]+ Y8 j& y8 Q: Z7 Q" J ]/ m
) H; A4 `6 J2 O2 ?: g( W6 _$ t
' ?. p: M- G' `$ n" T6 V
: g6 z# R3 u+ h$ Z5 \" d |
zan
|