- 在线时间
- 333 小时
- 最后登录
- 2024-5-20
- 注册时间
- 2023-7-11
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 5812 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2152
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 817
- 主题
- 814
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
|
问题描述】
* C$ n; n! T# M你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
4 I [$ V: Q& U: @那么这套砝码最少需要包含多少个砝码?$ L; j) t# ~3 d
注意砝码可以放在天平两边。# A/ t j. X% c& Q! C( W: K7 W/ z
2 z6 |' [ P) J K* J, n【输入格式】8 l7 ^( L: U+ X5 K6 p; x
输入包含一个正整数 N。9 s, x. Z/ N( ?* X7 k8 q9 x
6 t5 p. A: R! H4 V
【输出格式】. p, D& c9 v1 _/ s; S
输出一个整数代表答案。
' }! X. n; A, h7 ?
4 N, i: Z# i; H) f3 @7 ~3 v【样例输入】
& t1 G& D" y* D7 u# X8 S71 b" w" Q0 }- q2 \( z
# P$ g) Y8 \7 X: d% ^1 ~【样例输出】
- i6 r# O5 N/ Q+ t9 V4 ^* g35 q# X! c7 ~+ r
; Z; D- }; k6 Y/ R- l【样例说明】
; k9 F/ U1 W& M( m" D) m3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。' d5 P& G! l* p5 }8 V6 A
1 = 1;5 u T: n! Z1 p G! U0 a, o( M
2 = 6 − 4 (天平一边放 6,另一边放 4);# z) S! R- r9 h$ l1 e
3 = 4 − 1;8 [0 V! f* r A3 A! _
4 = 4;# ~0 n. A, @$ n8 ^$ L2 m
5 = 6 − 1;; E% G1 H, Z0 ~ ^9 S8 w% \2 T
6 = 6;* M# j; l( O/ A; g; G7 j3 p, |* r
7 = 1 + 6;: `2 F* A: I+ V- m
少于 3 个砝码不可能称出 1 至 7 的所有重量。- import java.util.Scanner; ' ~! q* q7 K6 M7 `! f& `8 W6 R
- public class Main {
1 z) ?( G1 W* J7 O& k/ o& _ - public static void main(String[] args) { P2 |; k# E; ], {
- int n = new Scanner(System.in).nextInt();
5 H: { k& \/ Z. O - int maxWeight = 1, minCnt = 1; 0 v I# t# z8 b2 M! f
- while (maxWeight < n) { 2 P: J3 Q! G2 [1 T\" v
- maxWeight = maxWeight * 3 + 1;
7 g8 O1 _3 P* i. p( `. O - minCnt++;
7 [, w: r0 n# u3 V( k1 s+ W - }
/ ^5 y8 m7 W( y0 l) c# j - System.out.println(minCnt); 2 S t' r1 Z\" |8 n0 w
- }
9 d% J X8 ^, g# Y5 w - }
8 }9 l* Z; k7 Q, C
复制代码 题解
" i6 S. Y% B+ I" r# e如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
& P- d; s, a" M& q! L+ W4 `2 B- V此时我们想扩大区间范围就只可以增加砝码7 J! a% Q% B4 s- E
假设增加的砝码重量为 k
6 \ g0 u8 n( \% u" O5 R3 [因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
! o7 G/ \1 p" C" v所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了( E/ I2 T- a% m, i
0 U! `. V5 i7 ^: @# x让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
8 ~) x, d: C, a' U& z F5 [- J( o$ `8 i; D( L
另 n + 1 = k - n k = 2n + 1
0 ^8 C: k9 @! I那么x + 1可以控制的最范围就是[1, 3n + 1]
1 C* ?" E7 [/ w7 f8 _8 ^ z
. v$ u2 Z E. M9 Z& g8 p7 B+ b- J7 T, h, }% |2 g
+ Q! M; T, q+ F5 ~" ^2 }; v
|
zan
|