数学建模社区-数学中国
标题:
最少砝码 Java解决
[打印本页]
作者:
2744557306
时间:
2024-3-29 16:40
标题:
最少砝码 Java解决
问题描述】
6 P1 d% g- S+ X" p! S0 E
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
, t* ?0 i2 h# J. E2 {
那么这套砝码最少需要包含多少个砝码?
1 ]2 ~3 @2 y# U
注意砝码可以放在天平两边。
+ v$ ^# _3 f) h) F* D( X6 O; f0 C
4 L- X% F; n7 K" n9 `0 t
【输入格式】
+ T( N( O, ?# k8 z/ m) ]. B) `
输入包含一个正整数 N。
. V- n8 _7 c6 W" t
" W: A, G. K4 [% O- D9 y. Q
【输出格式】
& C+ m9 \9 [* {: K
输出一个整数代表答案。
; z1 G; ?- B4 i- E1 H7 ~
$ T. k2 D* N. Q/ h$ N
【样例输入】
$ K; ]& ]' E+ K R
7
7 X# u' y+ o/ }6 ^0 B4 T$ i5 \
' ]" e" S2 t9 q, i
【样例输出】
+ L( \$ {2 s+ t- w T
3
5 D! H p; _$ \6 H; i _5 w. S: m. h
" |: D: T- [3 B6 j, X8 U8 d# `2 z
【样例说明】
' e1 s8 Q! K) F( [$ A# i0 B
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
$ o3 z$ L y# A
1 = 1;
" W! ~0 F$ M" c6 f/ m# J
2 = 6 − 4 (天平一边放 6,另一边放 4);
3 f. I' |- O( t- r% _$ Q
3 = 4 − 1;
6 ?! p4 D! h/ _* L2 q9 E( C% \
4 = 4;
& t$ E2 r% k: ]; |; @: o
5 = 6 − 1;
9 W& o' ?+ k! g9 M
6 = 6;
: j" {% n) j/ S4 C F) d
7 = 1 + 6;
6 x5 T* E; @6 a$ u4 \# N0 M
少于 3 个砝码不可能称出 1 至 7 的所有重量。
import java.util.Scanner;
0 g4 U& \( C# e0 b) c
public class Main {
, \' L! J* j( h7 l7 T& F! H, v
public static void main(String[] args) {
( K& U+ ~9 l. O
int n = new Scanner(System.in).nextInt();
# v. g% }; o. [
int maxWeight = 1, minCnt = 1;
" a" x& V) l& h. ]3 S0 M$ n
while (maxWeight < n) {
9 a& K" c. Q, ?) P
maxWeight = maxWeight * 3 + 1;
% L; Q3 Z& l, m2 \2 A' R
minCnt++;
1 N1 h7 `' r3 R& {
}
& J$ R" ^+ J3 G
System.out.println(minCnt);
. }& U# \, G: z8 N9 m5 y! w9 m
}
( u4 G6 y- T6 j- I% L. F
}
, J& f5 | ]# O& b6 r
复制代码
题解
* L% v% I- y* s9 j8 Y
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
/ Z* K- s0 d4 X% J8 v% r
此时我们想扩大区间范围就只可以增加砝码
/ V; ]% V! k! y
假设增加的砝码重量为 k
, n3 H4 W [6 ^1 ]- U. b4 y
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
, j) N, Y+ H6 a" ^) `! b3 x
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
# W- R+ H( h' e
4 z) i3 H$ L: X* w: J
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
. A! F, [1 T# r# l
, g. w0 q: W) L7 x
另 n + 1 = k - n k = 2n + 1
( f+ }6 F1 G$ F8 ^- z
那么x + 1可以控制的最范围就是[1, 3n + 1]
" V; V; X4 m) \ q, ], u" K8 H0 o- n& b
. `$ @, |6 [1 Q# ?% t) e! n+ y
9 i# z6 m! q/ r) x1 d( P7 y
: H* U, ~' k3 K1 O6 E: F! k( X
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5