QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1176

主题

4

听众

2888

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
问题描述】
& N$ @/ p& \8 X; }你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。& J0 f( L) f' a
那么这套砝码最少需要包含多少个砝码?
: S# o+ U" }0 A& S' t注意砝码可以放在天平两边。: S* m4 M% S' R! b$ k1 r% A
% F9 V5 ?5 b/ T  o* \) H! c
【输入格式】- }; J6 F; X, n. [  R1 x0 R0 a
输入包含一个正整数 N。
9 U  Q/ T/ ]  Z  O4 q' G6 z% b* g0 j8 z  Y
【输出格式】7 h- C" |7 B) i/ M6 }- a+ ?, i( W
输出一个整数代表答案。, J4 L$ q2 |/ T8 R# P. c& z
0 @, `, ]: b8 i
【样例输入】
# x  }- G" G. H# H8 P7
+ ]% q6 \7 h/ L. K4 J& ^* l$ t' T# q+ Q
【样例输出】/ ~. s' Z) g1 x9 _
3' B7 G' a4 k# t! f' h4 J
  s2 o  g3 ], @
【样例说明】
: n1 x" \: s" b3 u6 J3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。2 S& g. @( Y! i" V" o! C: R, H
1 = 1;
$ J5 P4 g( g) W1 W2 n0 Q- \2 = 6 − 4 (天平一边放 6,另一边放 4);0 U- d3 u/ A* }  `. g/ L' R
3 = 4 − 1;
3 B" ~1 u) v% y  C5 V. V4 = 4;
; p# |, H, T+ i6 W; P. s  L5 = 6 − 1;, `/ p/ s/ B( a0 a7 {" U% r) I
6 = 6;
2 T& c. X% I9 F( n1 u% Q7 = 1 + 6;
  P1 X4 @- K& Q少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  2 @7 N8 w* U# M6 Q4 n( L; Q3 g/ J
  2. public class Main {  
    $ }0 E' X2 E) w. B
  3.     public static void main(String[] args) {  
    9 {* t% Q: v& F( o1 q9 B
  4.         int n = new Scanner(System.in).nextInt();   
    0 l3 Y2 ]2 i) m- M\" J. G
  5.         int maxWeight = 1, minCnt = 1;  8 w  I5 l, }# W
  6.         while (maxWeight < n) {  
    ; c( x2 d) U8 `: Q\" _4 ~5 M3 x\" ~) C5 r
  7.             maxWeight = maxWeight * 3 + 1;  1 z; P  l2 b. B
  8.             minCnt++;  
    # b) ^2 r5 p7 s/ t\" T
  9.         }  3 Z- ]; @$ Z2 ]7 |/ E. I
  10.         System.out.println(minCnt);  \" J% k0 G  Q2 C* g9 W3 v
  11.     }  
    % n6 a5 d) [% F, E$ U
  12. }
    + R% y4 h& O2 @# t
复制代码
题解- H% |( ~# a- l& h
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
2 v. \0 f* t( h5 `此时我们想扩大区间范围就只可以增加砝码; h/ C9 Y7 ^8 I
假设增加的砝码重量为 k7 K* l- D( @& @8 h* P
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
2 \+ o7 Q' M: b: G7 I所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了+ p. S" s" h7 V$ g. M$ N

8 V4 s' J: w7 I让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
( {' z( e: _9 i; G2 J. |3 f  P! v! N  P' C1 I; @
另 n + 1 = k - n k = 2n + 1
7 \- S6 z/ k! v  s; v8 v那么x + 1可以控制的最范围就是[1, 3n + 1]
6 w; {& e# w4 ?8 C0 W# u. V+ Q4 ?6 W
7 r: X2 A% K# {+ Y0 `( u& g
, b# v. a: a( x- m$ m& T5 E3 m2 c0 Z- I: c! e4 {* @
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-7 19:50 , Processed in 0.279299 second(s), 52 queries .

回顶部