- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】7 Y) V4 _+ F% D; i7 W' _
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。4 m7 E- P' E4 y
那么这套砝码最少需要包含多少个砝码?: d5 o$ M! \/ X$ ~5 v
注意砝码可以放在天平两边。; [+ p$ H# w) s3 s: R$ w
* W! ~8 e9 |4 F1 M& I1 A
【输入格式】
6 B9 z4 J* R# o5 J2 t. D+ l输入包含一个正整数 N。# l$ D# m. S! x9 y6 Z& H
/ ^ y- d( h9 \8 w6 u6 d5 D; |
【输出格式】9 Y6 t3 b" [4 h) ~7 \- \
输出一个整数代表答案。( _( A8 x( }9 Y, Z( k
$ }& V3 _0 a/ g
【样例输入】
8 |# l: C4 M" w7
: Z6 a3 K. b0 D0 E" z' h) ]* v( q% s
【样例输出】
A9 M. g* |, [# W; T3/ v: E- T" k) o A8 g
6 C7 q( b- m6 ?# l/ G, t1 ^- w
【样例说明】5 O, [: Q9 U0 q- S2 o0 L7 A
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
$ m. m# x- C- S& c) \1 = 1;- H \7 O& ^5 r$ f
2 = 6 − 4 (天平一边放 6,另一边放 4);
( T; w, Q# s- y5 N. ` W. @$ R: \3 = 4 − 1;
: U6 ]1 |, x& Q, ?/ z( g4 = 4;
8 n6 J ~$ _/ o6 o) k) ?$ t5 = 6 − 1;% z% V( P( g7 X/ y: }2 B. D
6 = 6;/ z+ N. I5 T, n% e9 W" m
7 = 1 + 6;; p: J1 I: p( u# h' P
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner;
, i' w4 N/ {- s$ L6 P - public class Main { * p$ l\" \. Q% F) c
- public static void main(String[] args) { \" r% W6 v B/ v+ j
- int n = new Scanner(System.in).nextInt(); 9 z: d7 T# T& r
- int maxWeight = 1, minCnt = 1;
1 o5 [# Z7 ^0 O - while (maxWeight < n) { ) h* g- }/ G: @: h1 m
- maxWeight = maxWeight * 3 + 1;
; U8 T0 p2 {; U* o - minCnt++;
+ {+ z2 J* M1 j% y' F7 C - }
3 E) v& C\" K' S' ?0 i u- ? - System.out.println(minCnt); * p N- l7 ~9 U U\" M, ^# T- }* ^) _
- } % |2 w5 G) f0 z i% J4 ]7 _! e
- }5 |( `2 F' i! s) i3 Q
复制代码 题解
N$ W$ x/ p9 x$ u! q如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
- y, U- L7 i9 r此时我们想扩大区间范围就只可以增加砝码
. P s% [+ Z: `( g; ^- e$ w假设增加的砝码重量为 k' b6 t7 f! x9 M i8 ?1 z- G
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作/ ]3 y; l) L% e; y* t+ x
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
) o$ N9 Z0 m+ w0 B
: {; T* {' s6 s8 g, \9 p让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围6 H5 a5 j a4 a2 g4 g
0 Z0 y( |, ~. P% Z9 d# d另 n + 1 = k - n k = 2n + 1
9 |- D" o) E! s d% E; t, S那么x + 1可以控制的最范围就是[1, 3n + 1]
' m% W M, C* K4 {% f5 e) M* q, d/ P; N$ W! m) g# X! r
! S' q# e" o( |# y. _# j: s* {5 \$ b4 e' g7 z# q; O
|
zan
|