QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】  r6 b; v- Z- k3 S
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。  Y- ^/ c7 U+ C; I- o: ^5 T/ P# B
那么这套砝码最少需要包含多少个砝码?
! r' o9 w3 p. R2 ?  C注意砝码可以放在天平两边。
. u3 W* j! B; v' B' i, Z5 Y0 m' j" j% I) ]; s: n
【输入格式】. ?# D! t3 v7 f% K" Z- M' |
输入包含一个正整数 N。' J0 D; E4 D6 H! t' b
' g" j2 L& _7 D& e4 b
【输出格式】
5 t* c0 r# v5 Q, V% w输出一个整数代表答案。
( Y4 n# s6 A9 t8 B8 j  p+ j, v' n, S" T5 O: c4 G2 m) ]
【样例输入】8 z6 E- M! Y% V9 Z; |$ @4 |
7
* h3 v7 B, A; a% I& h8 X; M3 @0 _7 b3 K
【样例输出】- P* m; T( q/ P" k& x! p
34 F1 H% N- ]6 z5 o" c! k% \

8 g4 _! X% ^; O, w. o' D3 \【样例说明】! b1 V4 T0 S: _: v9 q6 s2 a0 l
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。' N* Q7 [& q4 J3 G) P  ^
1 = 1;
  Z; u( [) C+ ^. D' R' {* z2 = 6 − 4 (天平一边放 6,另一边放 4);
+ X' _) H# P& T% E) P1 w$ {3 = 4 − 1;( d' z* b/ C0 \# e/ m
4 = 4;1 O7 G; V0 i6 L% C& I! u. `8 F
5 = 6 − 1;
+ [2 s' J) w& D; X, d6 = 6;
. X- F- d7 y+ D  v* f' y: b7 = 1 + 6;2 T% r4 O2 S6 N" t
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    % @9 j. L6 W! j. m; u/ `8 a9 L
  2. public class Main {  - {3 V* R- A( d* e; }  _
  3.     public static void main(String[] args) {  : G! M0 H- ~& {  k1 G- P) L
  4.         int n = new Scanner(System.in).nextInt();   
    ; P& ?$ y* ]7 o* ?9 }
  5.         int maxWeight = 1, minCnt = 1;  
    * h+ }9 z! P6 h6 q. d/ R
  6.         while (maxWeight < n) {  
    2 A' `( P6 R( K; ]- L5 M
  7.             maxWeight = maxWeight * 3 + 1;  7 ~% N7 z; H\" x0 E
  8.             minCnt++;  ' P( N; `( I% S6 M9 i+ @- t! a' |
  9.         }  
    2 n' p9 T% c\" @/ B
  10.         System.out.println(minCnt);  . \2 m9 Y# ?6 h. i
  11.     }  
    1 L7 t% L+ e& A7 i0 a4 P- k
  12. }# B, E: z  d$ E$ a  ^6 z* G
复制代码
题解
' y5 N" Z1 C. Z  l" y  a# G如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个1 p7 z. B9 _' ^3 P( `  m) n& ]
此时我们想扩大区间范围就只可以增加砝码1 w8 ?5 K1 _* ?2 D4 o2 r( y
假设增加的砝码重量为 k# y3 M( y) u. i4 T, t5 j
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作3 {. i- o* V- B; b, t6 M! \
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
( i" {9 S" c7 X& C% A5 U" H% J5 d
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
5 _4 x- C; p  V
4 K9 v- N: V+ B, x  j( a另 n + 1 = k - n k = 2n + 1; K& U$ o3 m7 C
那么x + 1可以控制的最范围就是[1, 3n + 1]
, @4 a9 A/ z; V0 d" Q  ]4 K  o
, g. y3 h# g9 I3 ^# O5 c2 q: @8 I3 S) P
2 c6 \3 M9 W  _% B8 T
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-7-13 20:00 , Processed in 0.379904 second(s), 51 queries .

回顶部