QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1176

主题

4

听众

2888

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
! D9 o- P$ P  ]* _3 t9 S. H7 N! T你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
. P+ n7 n+ ~4 |% B那么这套砝码最少需要包含多少个砝码?
# T$ V. S6 j6 l4 C, W注意砝码可以放在天平两边。
1 `9 h7 A( z2 T
- e: Q( |" m; |: k( t【输入格式】
" o4 v" r! \$ g0 Y4 m$ B3 L输入包含一个正整数 N。
% |! E: B* X; B( T2 d; N6 t& G! v" m: h) H& P
【输出格式】/ T$ J; H) \8 [, M9 `1 e7 G8 \
输出一个整数代表答案。) i# ?* r' N: E/ F$ e) |
$ J* {& o1 N  d- h9 m
【样例输入】  X- M% R3 K/ A5 g) B9 i; Y
71 J) ~2 {9 c- M9 Z2 R9 c4 ?
! n/ Z4 |4 X6 t- v4 `
【样例输出】$ y8 G6 m4 w6 y2 {9 `# Z2 F& E
3
4 l, C5 ^; B1 o: K4 b
! l9 R, p% I3 q8 u- i2 A" z. i4 U【样例说明】
) _- K/ v. Q1 }! b( W3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
# m+ y% p$ D$ v. c& _1 = 1;0 T8 y' v. k8 _4 D) i
2 = 6 − 4 (天平一边放 6,另一边放 4);
6 z- m) b. ?8 V- ^9 i3 = 4 − 1;8 v6 h* {8 F- c8 Z; Q
4 = 4;' |8 ]( f, B+ f4 X) m1 r$ P
5 = 6 − 1;
( w- S1 C% Q7 l6 = 6;
; x$ r6 i) \/ x$ l: X9 L6 C7 = 1 + 6;3 z7 _# X* n1 C, f. n
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  4 V* d. Z8 f: i8 E; O
  2. public class Main {  
    * ?* _, [  a0 P6 R\" v1 G; x
  3.     public static void main(String[] args) {  * ~! B5 _\" F: @6 B
  4.         int n = new Scanner(System.in).nextInt();   
    7 L: R; y1 T. T' u% }
  5.         int maxWeight = 1, minCnt = 1;  ; Q. Z+ a5 O0 E  d\" t
  6.         while (maxWeight < n) {  
    2 `9 f: ^& Q2 s+ b' m' j! L
  7.             maxWeight = maxWeight * 3 + 1;  9 N  m6 r) J/ p7 V4 E
  8.             minCnt++;  ' |+ H: `- m3 Y0 m. b5 V\" r
  9.         }  % D2 v\" j4 h+ y. v6 A1 V6 c2 {4 S
  10.         System.out.println(minCnt);  
    / {2 ]* W- x- G: v0 ]\" G
  11.     }  
    ! S# ], ^; N  }! y, \3 N
  12. }0 r* F7 ?\" y8 B3 x
复制代码
题解+ w1 }/ Q# I- _8 \5 H1 h5 {  W
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
( d; h9 c2 o# Y) V( r# |* W5 o此时我们想扩大区间范围就只可以增加砝码4 e  @! [3 B- J
假设增加的砝码重量为 k
& P& R5 r" ^4 a; i7 c因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
! d8 \; \8 b5 k2 p, b9 j0 C所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了7 ]& j4 u* |- l: C9 k/ I

! V+ C0 g' s0 G2 ^6 w+ V% q让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围. d* S* f  ^+ |
) t/ T" M% V8 [/ o' E7 |
另 n + 1 = k - n k = 2n + 1
, |+ z" v3 a, E$ B1 [& \* \那么x + 1可以控制的最范围就是[1, 3n + 1]
7 @+ f3 E3 V% A& `9 V% A7 V  g) M" w1 f1 u6 T

( `8 F8 v, s+ z
4 g0 S( p+ N& V# V- F* V' }
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, 2025-11-8 07:14 , Processed in 0.434239 second(s), 50 queries .

回顶部