QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

814

主题

1

听众

2152

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
* C$ n; n! T# M你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
4 I  [$ V: Q& U: @那么这套砝码最少需要包含多少个砝码?$ L; j) t# ~3 d
注意砝码可以放在天平两边。# A/ t  j. X% c& Q! C( W: K7 W/ z

2 z6 |' [  P) J  K* J, n【输入格式】8 l7 ^( L: U+ X5 K6 p; x
输入包含一个正整数 N。9 s, x. Z/ N( ?* X7 k8 q9 x
6 t5 p. A: R! H4 V
【输出格式】. p, D& c9 v1 _/ s; S
输出一个整数代表答案。
' }! X. n; A, h7 ?
4 N, i: Z# i; H) f3 @7 ~3 v【样例输入】
& t1 G& D" y* D7 u# X8 S71 b" w" Q0 }- q2 \( z

# P$ g) Y8 \7 X: d% ^1 ~【样例输出】
- i6 r# O5 N/ Q+ t9 V4 ^* g35 q# X! c7 ~+ r

; Z; D- }; k6 Y/ R- l【样例说明】
; k9 F/ U1 W& M( m" D) m3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。' d5 P& G! l* p5 }8 V6 A
1 = 1;5 u  T: n! Z1 p  G! U0 a, o( M
2 = 6 − 4 (天平一边放 6,另一边放 4);# z) S! R- r9 h$ l1 e
3 = 4 − 1;8 [0 V! f* r  A3 A! _
4 = 4;# ~0 n. A, @$ n8 ^$ L2 m
5 = 6 − 1;; E% G1 H, Z0 ~  ^9 S8 w% \2 T
6 = 6;* M# j; l( O/ A; g; G7 j3 p, |* r
7 = 1 + 6;: `2 F* A: I+ V- m
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  ' ~! q* q7 K6 M7 `! f& `8 W6 R
  2. public class Main {  
    1 z) ?( G1 W* J7 O& k/ o& _
  3.     public static void main(String[] args) {    P2 |; k# E; ], {
  4.         int n = new Scanner(System.in).nextInt();   
    5 H: {  k& \/ Z. O
  5.         int maxWeight = 1, minCnt = 1;  0 v  I# t# z8 b2 M! f
  6.         while (maxWeight < n) {  2 P: J3 Q! G2 [1 T\" v
  7.             maxWeight = maxWeight * 3 + 1;  
    7 g8 O1 _3 P* i. p( `. O
  8.             minCnt++;  
    7 [, w: r0 n# u3 V( k1 s+ W
  9.         }  
    / ^5 y8 m7 W( y0 l) c# j
  10.         System.out.println(minCnt);  2 S  t' r1 Z\" |8 n0 w
  11.     }  
    9 d% J  X8 ^, g# Y5 w
  12. }
    8 }9 l* Z; k7 Q, C
复制代码
题解
" i6 S. Y% B+ I" r# e如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
& P- d; s, a" M& q! L+ W4 `2 B- V此时我们想扩大区间范围就只可以增加砝码7 J! a% Q% B4 s- E
假设增加的砝码重量为 k
6 \  g0 u8 n( \% u" O5 R3 [因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
! o7 G/ \1 p" C" v所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了( E/ I2 T- a% m, i

0 U! `. V5 i7 ^: @# x让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
8 ~) x, d: C, a' U& z  F5 [- J( o$ `8 i; D( L
另 n + 1 = k - n k = 2n + 1
0 ^8 C: k9 @! I那么x + 1可以控制的最范围就是[1, 3n + 1]
1 C* ?" E7 [/ w7 f8 _8 ^  z
. v$ u2 Z  E. M9 Z& g8 p7 B+ b- J7 T, h, }% |2 g
+ Q! M; T, q+ F5 ~" ^2 }; 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, 2024-5-21 03:42 , Processed in 0.419177 second(s), 50 queries .

回顶部