QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】! `" V. t! E9 N/ Q2 G4 `: y: w
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。, E9 T9 D3 \4 ^) ?" [
那么这套砝码最少需要包含多少个砝码?& U4 L! }. E% ]5 B/ h& p/ V
注意砝码可以放在天平两边。# j: N2 L4 X' Y% p5 B. A
1 b! X$ X# k( y2 V0 ]" O( f  J) M
【输入格式】
! z/ w$ ~# N+ {$ x- V输入包含一个正整数 N。
- B0 }2 U$ |% V1 Z8 V$ }" a# y: A) R9 q
【输出格式】
5 e! T! C! ]' E6 I9 O4 l" f输出一个整数代表答案。
' b4 m4 u: j! Q* o4 N$ b0 v/ n! Q! N) I  b; u5 x2 M
【样例输入】
- h) l' z; k! u, @7
  Y( L7 c8 t* M$ w$ {# M- s7 Q& h# P" m- z# R0 l9 H  |
【样例输出】: H5 _( ?9 b6 g
3. i+ N4 n+ N2 p3 V5 k7 |

5 @% J4 T! M. d( g$ r5 E【样例说明】
4 l* C4 G5 l1 j1 W3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。5 y* P. k2 V4 i* ^
1 = 1;! c! y$ w4 M/ J2 n4 |
2 = 6 − 4 (天平一边放 6,另一边放 4);
- \7 u+ e; S/ r2 A6 r' j3 = 4 − 1;+ ?0 v0 N+ |& o* G; M% |% Z
4 = 4;
! O. f4 T3 U; Y) C/ A; H  }. G5 = 6 − 1;
0 g2 ]/ i5 Q5 t4 U6 = 6;
: |0 b2 d8 i: l& f( R7 = 1 + 6;
$ j' ?3 n- c6 f* }$ y. a/ K少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    $ ?\" c2 l! e' K\" m3 r
  2. public class Main {  
    ( m& g- d$ w# N  m- |! ]3 S
  3.     public static void main(String[] args) {  
    , v! ?- I  o( H1 Z. A% v( G9 Z. O
  4.         int n = new Scanner(System.in).nextInt();    5 q/ i  n/ }2 \$ L2 u  F3 j
  5.         int maxWeight = 1, minCnt = 1;  
    5 @! P\" p4 h4 ~/ H) M$ w
  6.         while (maxWeight < n) {  
    3 B6 v7 A3 M  C' b
  7.             maxWeight = maxWeight * 3 + 1;  
    , J! f$ V2 V6 @6 j, M$ b
  8.             minCnt++;  
    & Z' C( x6 N$ Q9 Y' O- N. X( C
  9.         }  
    5 C/ B5 n4 d4 ~) O\" D
  10.         System.out.println(minCnt);  # [; Y! D1 {5 Q5 R4 `- h
  11.     }  
    8 r2 j4 d1 K6 n/ ~% K: c- B
  12. }, g+ U: @+ q3 {5 j
复制代码
题解
. H. {) F& ^# N* R0 F; F$ y6 F如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
: \8 [6 s- @: [此时我们想扩大区间范围就只可以增加砝码1 G& H! j. F$ I) c1 o" ~: @
假设增加的砝码重量为 k
  d) @3 F: r: d- @0 ^* U因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作  P# x+ [$ W- l
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了  V, x3 C0 A' l9 [. m: j* ~9 R+ v: N
8 [& e2 s# V) g( j7 e- Y, ]' @
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围. h' a! @* V# _2 _

* e5 X2 M% W  ?" G# Q% |另 n + 1 = k - n k = 2n + 1
' o+ |- L3 j0 ~, b那么x + 1可以控制的最范围就是[1, 3n + 1]: ^( Y; t( m( L& @( `  w

. x% K8 p5 l6 G- y2 J1 d2 b) c5 n7 G8 b) d9 z7 N  a

4 v" H! z# L& k: \5 z
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 07:25 , Processed in 0.943180 second(s), 51 queries .

回顶部