- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
- g6 {: n. \: Q! U3 a& d你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
* G: I6 Y; l% P- y那么这套砝码最少需要包含多少个砝码?
3 P% E3 f" b6 Q" Z$ E5 @4 O! I注意砝码可以放在天平两边。
" I0 } C4 _# Z$ t4 k" c
0 F: n$ K6 i+ k" E! \2 |/ p4 |; g【输入格式】$ o* c. v* w0 i; f! O
输入包含一个正整数 N。5 w: h$ p1 s' G7 A5 o$ T* \- W
9 }' w, W% C+ k
【输出格式】' A5 m* A2 @4 q
输出一个整数代表答案。
! e4 `( c. {' N3 L! ~$ ]! ^, g) e& I+ p; `; T6 K( Y" O* |& g
【样例输入】1 X9 ~; f+ p4 y2 L4 W7 [' C. N/ g
7' h, y4 B8 H4 O* ?( D6 G
) E9 b+ y. \1 G- v0 u7 J+ @
【样例输出】
$ p& l5 m2 _7 G- N. g, A3! t1 {) x) l% }2 e9 G; H
3 l. m. p7 d" b( E【样例说明】" l$ Y0 N9 L+ P, l
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
9 \6 F. X" e7 l( K5 V1 = 1;
" ^0 V' [2 u. \ [" v/ [( ?5 l2 = 6 − 4 (天平一边放 6,另一边放 4);
& ^6 \4 k% N- l! p6 Y2 {3 = 4 − 1;
# A6 u% c5 e: @4 s4 = 4;* C+ b6 ]$ y+ ~; b" k4 k) k6 z7 D4 N
5 = 6 − 1;
+ i3 g( Z/ c* h" w6 = 6;
* Q, ?! J! ^0 ~7 x# y8 Q; h7 = 1 + 6;
8 \3 s& ?$ m5 n0 F$ Z少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; * f6 a- T\" L: T' X& Y6 b
- public class Main {
P, M3 j/ c- M- m - public static void main(String[] args) {
5 D x/ t( w% c3 C, @+ U( I L - int n = new Scanner(System.in).nextInt(); / j9 B( L5 M' C T; T2 L5 H2 u
- int maxWeight = 1, minCnt = 1; * A3 r; t! W% ?% p1 n8 c
- while (maxWeight < n) { & f5 P2 q7 u* ?7 n. H
- maxWeight = maxWeight * 3 + 1; 4 W4 l' G. ^0 ]\" [9 q
- minCnt++; / H* T3 A G, W9 O0 e/ E
- } , z! c/ u7 {/ {4 O2 }
- System.out.println(minCnt);
$ Q1 o7 v6 d% K/ [) g - }
! i# ^. `6 y1 O2 B6 b - }
x4 |. T R' m9 q9 Y& E4 z
复制代码 题解1 g( n) A0 Y" l$ @$ w& z
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个8 `+ ?4 j: O: J5 V- S) I- m
此时我们想扩大区间范围就只可以增加砝码. k5 G; s8 I6 _3 D! L# V* B3 i# e
假设增加的砝码重量为 k
$ {' K# Y, J7 N) |0 U4 E, \- y; y% H因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
9 X8 p- j# A" p# @& s' S" Q所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
q+ y( E& j& C% t+ y5 K, d% y' ]" O- C
# h0 F& ?, u; `! U. z让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
- `- a! d7 X: m3 _# B3 Q
) E% t( e; D1 {另 n + 1 = k - n k = 2n + 18 T' {% D+ s- M- @# O' k* g( X
那么x + 1可以控制的最范围就是[1, 3n + 1]
. g1 |+ `4 n# {
) N' e$ }5 p6 Z3 a( a# _; y+ D5 Y, ?' j* F2 a
; @5 D$ e1 I' ~: c6 r |
zan
|