QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2138|回复: 0
打印 上一主题 下一主题

最少砝码 Java解决

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
问题描述】
0 }: J" V* b* S' }* V+ A! v你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
3 x7 @) t7 \) W) ^5 }那么这套砝码最少需要包含多少个砝码?
' G  v8 _% B" a# {$ M' k注意砝码可以放在天平两边。
/ o! [- e+ f5 G& p9 e1 w$ N, x$ ^
# E) H+ N& _$ _8 r& J# Y【输入格式】, O1 w& A/ [' m5 Y  Y, }
输入包含一个正整数 N。. _9 N8 O& Z! Z9 B6 H

  d5 @& a! p7 q) R! B/ q【输出格式】7 P3 H; C$ N9 f. k! \
输出一个整数代表答案。& c/ q9 V! `& K

' o, K, H& P: H6 X7 B【样例输入】) z3 \. P! E/ J  ^( v6 ]
7; z6 Y2 c3 ~/ h% p

% a- ]# Q" B7 D0 f. {" x0 T" v* S【样例输出】7 I3 b% o2 ?  J
3' G' V4 f7 T. N8 s7 {- g! l9 `- i
) p% [- ]8 F; ]4 l* d6 K3 ~
【样例说明】
" w; i, ]# B5 X! q/ {1 G) v3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
% ~: l, o- D4 |. a1 = 1;  {2 Q: C# |4 n8 V! m! ~$ L
2 = 6 − 4 (天平一边放 6,另一边放 4);
+ c7 b) U- b, y* e3 = 4 − 1;
! e7 W) f* I9 z: w/ n4 = 4;
9 R* }8 y8 X0 c( ^5 = 6 − 1;
4 t7 F# W! ^% u# R  e8 R3 E2 u" c1 k- }6 = 6;- G; x' J1 O) a5 h2 A8 P7 M$ Q3 P# P
7 = 1 + 6;/ E7 `- p4 g" F7 G8 S; Y4 o1 g6 {  B
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  - y( L) [: L. V5 j. q
  2. public class Main {  ( \$ w8 k7 K# ?
  3.     public static void main(String[] args) {  ; g% J8 ~+ v\" Q  S
  4.         int n = new Scanner(System.in).nextInt();    $ z& N+ G! F. L; q$ O6 @
  5.         int maxWeight = 1, minCnt = 1;  
    3 o6 Z% t: N0 {2 `3 S, S2 |% [0 Y
  6.         while (maxWeight < n) {  + P5 r. `+ X! o( \9 }# ^
  7.             maxWeight = maxWeight * 3 + 1;  7 U- u8 a& ]( Z6 G* \
  8.             minCnt++;  
    2 |( c, `\" F1 r
  9.         }  
    ; K  F% a' k& i. O\" w- o7 d: T
  10.         System.out.println(minCnt);  
    : h; Y0 U8 z0 `- m2 f
  11.     }  ; O2 l4 _! {\" O7 H* m
  12. }
    $ P- ~( l/ a  \/ q( Z; s' g
复制代码
题解8 N& j/ N& t5 `# Z$ K0 U( {
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
: Q6 P. t9 _5 x9 _: I- b此时我们想扩大区间范围就只可以增加砝码( t4 Y* q5 ^. ~( x
假设增加的砝码重量为 k: t3 D% R  ]8 Z( ?
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
9 h9 c& x. w& E* }6 B) P+ ~所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
) j* B( m- D+ n4 [3 R
+ S: \7 R6 ^4 W让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围+ P& r- r; S/ @# K# O0 ]

6 q1 G) Z5 k$ ]) m) C9 v5 n8 ^另 n + 1 = k - n k = 2n + 1
5 M+ c: g- z: G! a- C4 i那么x + 1可以控制的最范围就是[1, 3n + 1]$ t! j& C' o2 j2 ^

- K; ~; A  w& s# r0 o
( |  F- Q1 q! l- T1 S$ r$ D+ m. Q
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-15 03:35 , Processed in 0.287450 second(s), 51 queries .

回顶部