数学建模社区-数学中国
标题:
最少砝码 Java解决
[打印本页]
作者:
2744557306
时间:
2024-3-29 16:40
标题:
最少砝码 Java解决
问题描述】
: q. c/ ~; {( D; w' ^
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
2 O) s& H0 a: x& _, ]2 [6 O' _
那么这套砝码最少需要包含多少个砝码?
$ s/ V7 ?7 N) k% ]6 l. X" P
注意砝码可以放在天平两边。
3 f0 n( @ j1 v! P/ P; Q# x
* ?0 N1 w& F0 A! i
【输入格式】
+ i6 ]9 ]2 p, i6 W; ^3 I' ~
输入包含一个正整数 N。
) v. V* O3 D: A. j# B$ T8 v
$ L* K/ y) r: E8 _
【输出格式】
! ~* U, O4 S5 Y9 U5 t7 y X
输出一个整数代表答案。
- F% S! Y( b. s+ i3 H7 c
# r! a1 v! M% F! S) }' }3 x
【样例输入】
; x2 I7 W% `, R% k: i! U! o
7
* [# [6 n# X/ d
5 ]- A. s' G7 d l9 V# n
【样例输出】
% v/ \6 t% j3 R2 G
3
4 T% r4 r2 ~9 ]% C2 t
5 u" o. Z; W' \
【样例说明】
3 ]; C7 J9 G% @& {$ W
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
5 Q/ u( w3 E' K
1 = 1;
0 Q$ `! m) r1 }: e' x
2 = 6 − 4 (天平一边放 6,另一边放 4);
8 l. `. Z) {) ^# l
3 = 4 − 1;
0 I7 n0 W; y% L$ E, J3 w' s
4 = 4;
- _0 n7 l6 b, W E( s
5 = 6 − 1;
- \7 ^! V% K1 C% K: o6 B, z5 M2 h$ T
6 = 6;
, Z; }% p, h7 [: Q( }! ~
7 = 1 + 6;
& I# e1 f' |- \. l# |+ G
少于 3 个砝码不可能称出 1 至 7 的所有重量。
import java.util.Scanner;
! N6 b4 t$ Z. I/ F
public class Main {
' d2 k9 R$ Y% W2 s* A) R7 t
public static void main(String[] args) {
+ K8 w. M5 z; ~
int n = new Scanner(System.in).nextInt();
- K% q( f4 T* Q" H
int maxWeight = 1, minCnt = 1;
( G0 J2 l0 m7 k! D* k# {4 \" u
while (maxWeight < n) {
& [( d4 }: W3 K, L5 |: m
maxWeight = maxWeight * 3 + 1;
& R0 {: w) a# [( ?
minCnt++;
" v: v$ U8 W. A2 `2 E" y
}
5 @6 G; f1 L* V) o
System.out.println(minCnt);
+ ?( H. u, ^) @& P" n' B9 U0 z
}
- z v2 t8 ~) q9 m* {. n0 v
}
1 _; Q3 a5 y& {' c& p0 L
复制代码
题解
6 i8 F" C. L( d' s% U
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
8 C+ _' \- o4 y: K& k
此时我们想扩大区间范围就只可以增加砝码
7 c; N$ g& V5 ^6 w# q) f
假设增加的砝码重量为 k
5 C U: e' A7 G2 j" P) Q* T
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
: |2 H7 U# [) p- ? M1 O
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
9 ]6 V, }4 O, P2 c: z. O1 \1 }
9 Y4 A. p) \& L, e) N
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
8 x( _. f. s! h) K: K
" v9 p* ^: y9 N1 C" X7 O
另 n + 1 = k - n k = 2n + 1
! }, x9 ~5 `" c! Z' ?' R+ j
那么x + 1可以控制的最范围就是[1, 3n + 1]
( w0 h% m# }5 S. \- e3 p W2 O
8 c% N: r2 ^0 G4 a( g% e8 n' \
* @- x7 {: p6 o) D0 \4 ~2 J
: D! W4 @, l5 K! ?
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5