- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
问题描述】
- A7 d& x* T1 {你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。9 N; a8 g) E W- J& B2 T% c
那么这套砝码最少需要包含多少个砝码?
" N% | d, S( N' K/ n1 B注意砝码可以放在天平两边。
. B0 S: Q! M: X3 |* i; e" u
4 K* A+ @2 [ L: G; k1 j【输入格式】& X+ f0 y' L1 O- X+ ?0 V ]0 N; ^
输入包含一个正整数 N。
+ v* }+ ^$ |3 M% V6 }
$ F) F3 K# i) ^【输出格式】. R2 ]3 _3 g: K! S; w1 s. O0 @
输出一个整数代表答案。3 Q5 j" n7 g, q0 A# l1 Y) g$ `% _
6 s3 t; X0 s* I! ~" \' r! m
【样例输入】
# l5 }9 B( y5 z3 C$ k" q, K72 G! U6 {4 r; p
/ P4 E( \/ |2 k7 u! i, \# l% k
【样例输出】
+ |" m0 E1 i- [/ x, t3
" Z7 O) u2 ~ s( Q: q- t4 G
. H: E9 M5 D7 }, b" [【样例说明】
7 _1 Y: V' u, z7 D3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。( [/ k, H/ Y: q) n
1 = 1;3 o; r' i# w2 S3 }. C
2 = 6 − 4 (天平一边放 6,另一边放 4); q5 Y2 L/ v0 H* F1 P7 P( |
3 = 4 − 1;3 t7 i& |/ K( G, [6 ]# q
4 = 4;
! t0 u' u. G# J8 T: y1 \5 = 6 − 1;
. Z+ F' @* p6 Z. N7 Y1 f! C/ m6 = 6;+ I# D0 `# K' \1 w5 l5 H) _8 U' S
7 = 1 + 6;
% U( W, D1 R2 u少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; 0 c9 d( y2 G: ?; v0 K! r; q\" t B
- public class Main { 7 [2 S$ {' x3 i
- public static void main(String[] args) {
: n8 C' S; t. Z9 ]7 }4 I o - int n = new Scanner(System.in).nextInt();
# [9 R1 O\" G8 T% r) T b - int maxWeight = 1, minCnt = 1; + C$ A u! e0 K* a. `
- while (maxWeight < n) {
9 q( i, ]: R! Y$ _- u% Z - maxWeight = maxWeight * 3 + 1; / T4 V4 K8 ^4 v! w\" A8 D! Q
- minCnt++; 1 _$ L& }, h! e8 v) k! B
- }
- s: t4 D& f$ V( W1 K- O& @ - System.out.println(minCnt);
+ v5 o7 n0 _0 m6 R9 f - }
* T% g6 L4 u\" T0 [* j8 G7 F, ~1 M - }
2 B* w$ f d6 E/ p1 W. S: S
复制代码 题解% [9 b B9 U" G. N
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
8 b! m7 V& n A8 c9 r$ a: ~9 J此时我们想扩大区间范围就只可以增加砝码
( V0 x* [- S7 ?2 i假设增加的砝码重量为 k
" X6 U; C- t: j* E% W4 ~& v5 _" K0 U, M( u因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作1 n' f7 F: L8 o
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
% E0 B5 J* l( W9 {: d
0 B; }1 N4 \- N9 `1 D让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
4 q. f1 n" Q$ J# ~+ m; V1 Z( ^; J- i$ v9 s/ ]8 Y( }4 m
另 n + 1 = k - n k = 2n + 1* o! @- p; n1 n% u& \# _$ y
那么x + 1可以控制的最范围就是[1, 3n + 1]3 |; p; [, u3 r" Q1 U
/ |. _' n4 L1 b( Z
7 x, r7 }. [: Z3 ~4 c* l& i5 K4 o7 Q$ q# t; O% B, G: d, V
|
zan
|