- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
* n; Y' r9 ~! s, W! k你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
. c2 t1 @ I& Y那么这套砝码最少需要包含多少个砝码?' `# q+ _3 p/ D, g
注意砝码可以放在天平两边。
' y) N& s4 o4 W0 H; L4 Q
% ? P, S* y" i7 X( n【输入格式】( Y: T1 i0 H9 i/ }- D1 n
输入包含一个正整数 N。
3 b- k. t8 G: R6 L6 w6 J, Q3 I) e9 c. @* ]4 f! E
【输出格式】# N2 X/ ~6 Q8 r1 p _4 W
输出一个整数代表答案。' v' e5 b0 L1 M7 S: I+ u3 H! v
. R0 A V# b7 X4 ^9 H【样例输入】
0 O$ g0 ~6 x# V8 z" r' F" u+ D76 R0 k9 q A( p* T6 s
0 [8 u3 Q {- ?* [( D【样例输出】7 ?. t& r% Z2 G' l
3% b2 I/ b' F; r8 Q1 X2 P% H
& g) [9 O r9 T5 p
【样例说明】
; Z" s; ^5 q( n3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。" \6 i' P, y$ r3 X. B" t
1 = 1;4 O* s; D F2 b4 c+ w
2 = 6 − 4 (天平一边放 6,另一边放 4); O: N: r& b5 V; W8 T: |0 A
3 = 4 − 1;$ t& V& C5 |' ^, u( {, V
4 = 4;3 l, O _, W3 F4 w1 J9 P
5 = 6 − 1;' Z; k- e! u9 {- J- t7 x6 O: K& [
6 = 6;
, s0 }" P' e V' a1 P7 U' i! C7 = 1 + 6;
2 S- g, k3 `' X: L; e1 s* l A少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; 6 P+ c- j& a3 n
- public class Main {
. u4 y$ {* i8 G - public static void main(String[] args) {
\" f+ h5 @: p$ M) | - int n = new Scanner(System.in).nextInt();
. @$ Y- ], Y: D4 T - int maxWeight = 1, minCnt = 1; ( a& `( F$ T$ E5 @9 T4 U
- while (maxWeight < n) { , I, q: I# J7 n+ m2 Z
- maxWeight = maxWeight * 3 + 1;
5 ]: o6 s) j) B. q5 R* p# F - minCnt++; : S, ]1 k. S+ G
- } 8 X8 Q& l7 G; q- Y3 J4 D! N( W
- System.out.println(minCnt); 2 z& L! Q- G; l% ~5 P# C) E; `5 ?% m
- } ( v6 `0 C6 }' S9 \+ x
- }
^7 S# r2 G% ^$ L
复制代码 题解
5 V0 N7 L( X& n: x! W% t如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
( M% P/ ~& H$ C此时我们想扩大区间范围就只可以增加砝码
+ z' c7 N- P5 k# C J" a3 T8 o( y* X# @假设增加的砝码重量为 k
3 U: P- s, {# ~+ f4 a3 d因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作2 _* @- {- I7 k& w5 \1 y6 @
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
3 }. Q* s9 i0 }
, \. U8 p- n# C让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
0 P( o$ F3 v& o# [3 h" S( F* B: u5 j! O. d. j9 M3 [
另 n + 1 = k - n k = 2n + 1$ R9 h, C$ C3 I4 H- z
那么x + 1可以控制的最范围就是[1, 3n + 1]7 i# L) H! s) x. }% g% [* x
. c; ]0 V1 R- C- S2 |9 c
/ w4 G. w- \! ]8 C$ U2 k/ W$ d
2 ^8 X' y* _' D! | |
zan
|