- 在线时间
- 321 小时
- 最后登录
- 2024-4-29
- 注册时间
- 2023-7-11
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 5228 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 1960
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 782
- 主题
- 780
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
|
问题描述】" S0 x9 ~' x- \+ h3 t* Y
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
. _* i# l& [9 ~6 z! o那么这套砝码最少需要包含多少个砝码?
! k- e3 d8 K; q注意砝码可以放在天平两边。; q% O: T" x* Q! q' L, X
; m, d1 V# G( ^6 \( s【输入格式】
! \! J) {3 T% E* }2 d输入包含一个正整数 N。# _! ~5 b) n4 {, @( c; i
* k1 c) v) ~3 j9 S3 o: n【输出格式】
1 D8 o, |) K$ W' J* G1 ^. ?输出一个整数代表答案。
7 j, a$ S" r; k4 m; E
8 o; e+ {7 j5 x x【样例输入】; g$ s9 }! c% }5 U$ u S7 i# h0 x
7
4 }2 ^5 Z- h# z- c) b) j8 _% \+ q: c* [5 @
【样例输出】 @' Y! ~$ A6 q7 i& _% [7 \
3& H# ?" V% b! S( u6 Y7 c
/ j* D9 G( A. H% } \1 m& d% q
【样例说明】
/ z3 t6 j y4 }. G( L/ z& e3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
$ ~! I7 j, t) C( c% i1 = 1;8 B% w& x& u j
2 = 6 − 4 (天平一边放 6,另一边放 4);* D1 W1 t$ ]" @+ M
3 = 4 − 1;
& j# d) N0 f1 R' u' O) t4 = 4;
. A7 v/ `4 F0 K9 p5 = 6 − 1;
8 y' R6 T; D9 W6 m6 = 6;( `5 x9 @' Q( _) M
7 = 1 + 6;
* |4 ? q/ t2 i: X' m6 P2 L少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner;
' Z Q$ k0 o$ D3 C1 F) H- b# R - public class Main { 8 b0 Y2 ~/ V\" L; f6 w4 E
- public static void main(String[] args) {
( l( u2 }+ v6 k - int n = new Scanner(System.in).nextInt(); ( O$ Q0 X5 `$ B. |
- int maxWeight = 1, minCnt = 1;
; o: g& D0 h. |( [8 p8 c - while (maxWeight < n) { ! J/ t. P) f' Z) B) E
- maxWeight = maxWeight * 3 + 1;
5 F4 J7 s8 w2 H3 F7 k - minCnt++; 0 s+ G& v+ w0 \$ }; w) Y& i# s: H
- }
2 U5 j& r5 k9 m. `8 s - System.out.println(minCnt);
' f) {$ c: u& ~. a6 a - }
/ b9 ~* W: n& `4 Z) A2 ?# G - }
3 q4 r- E\" d: j' y \3 n
复制代码 题解
* _- p. {5 ^9 K- V2 S" g, o如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
0 d5 [, {5 g' w9 g8 p z3 l此时我们想扩大区间范围就只可以增加砝码
7 i( e2 U; J/ m6 v假设增加的砝码重量为 k7 F, B/ z: I5 `4 _: c+ J4 }: ?
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
! I0 G9 v0 E9 [& V' C- G% `所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了& K9 J( u5 V+ T; t C7 t9 N: v' Z
6 E: ? ]" F9 M, R: W让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围. W9 p, V5 Y% \
$ }) P$ g! m2 i5 Z) [; Y
另 n + 1 = k - n k = 2n + 1
; O. {' d& z7 e. _1 ^) z那么x + 1可以控制的最范围就是[1, 3n + 1]0 ] ~; @# I. c2 m8 V2 n: K
0 u# D0 B$ U0 e5 }2 h* h+ F
9 k ]! ]- W- a( t9 }) K( f' ~: U: x: T7 \6 I. o
|
zan
|