QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】7 Y) V4 _+ F% D; i7 W' _
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。4 m7 E- P' E4 y
那么这套砝码最少需要包含多少个砝码?: d5 o$ M! \/ X$ ~5 v
注意砝码可以放在天平两边。; [+ p$ H# w) s3 s: R$ w
* W! ~8 e9 |4 F1 M& I1 A
【输入格式】
6 B9 z4 J* R# o5 J2 t. D+ l输入包含一个正整数 N。# l$ D# m. S! x9 y6 Z& H
/ ^  y- d( h9 \8 w6 u6 d5 D; |
【输出格式】9 Y6 t3 b" [4 h) ~7 \- \
输出一个整数代表答案。( _( A8 x( }9 Y, Z( k
$ }& V3 _0 a/ g
【样例输入】
8 |# l: C4 M" w7
: Z6 a3 K. b0 D0 E" z' h) ]* v( q% s
【样例输出】
  A9 M. g* |, [# W; T3/ v: E- T" k) o  A8 g
6 C7 q( b- m6 ?# l/ G, t1 ^- w
【样例说明】5 O, [: Q9 U0 q- S2 o0 L7 A
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
$ m. m# x- C- S& c) \1 = 1;- H  \7 O& ^5 r$ f
2 = 6 − 4 (天平一边放 6,另一边放 4);
( T; w, Q# s- y5 N. `  W. @$ R: \3 = 4 − 1;
: U6 ]1 |, x& Q, ?/ z( g4 = 4;
8 n6 J  ~$ _/ o6 o) k) ?$ t5 = 6 − 1;% z% V( P( g7 X/ y: }2 B. D
6 = 6;/ z+ N. I5 T, n% e9 W" m
7 = 1 + 6;; p: J1 I: p( u# h' P
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    , i' w4 N/ {- s$ L6 P
  2. public class Main {  * p$ l\" \. Q% F) c
  3.     public static void main(String[] args) {  \" r% W6 v  B/ v+ j
  4.         int n = new Scanner(System.in).nextInt();    9 z: d7 T# T& r
  5.         int maxWeight = 1, minCnt = 1;  
    1 o5 [# Z7 ^0 O
  6.         while (maxWeight < n) {  ) h* g- }/ G: @: h1 m
  7.             maxWeight = maxWeight * 3 + 1;  
    ; U8 T0 p2 {; U* o
  8.             minCnt++;  
    + {+ z2 J* M1 j% y' F7 C
  9.         }  
    3 E) v& C\" K' S' ?0 i  u- ?
  10.         System.out.println(minCnt);  * p  N- l7 ~9 U  U\" M, ^# T- }* ^) _
  11.     }  % |2 w5 G) f0 z  i% J4 ]7 _! e
  12. }5 |( `2 F' i! s) i3 Q
复制代码
题解
  N$ W$ x/ p9 x$ u! q如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
- y, U- L7 i9 r此时我们想扩大区间范围就只可以增加砝码
. P  s% [+ Z: `( g; ^- e$ w假设增加的砝码重量为 k' b6 t7 f! x9 M  i8 ?1 z- G
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作/ ]3 y; l) L% e; y* t+ x
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
) o$ N9 Z0 m+ w0 B
: {; T* {' s6 s8 g, \9 p让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围6 H5 a5 j  a4 a2 g4 g

0 Z0 y( |, ~. P% Z9 d# d另 n + 1 = k - n k = 2n + 1
9 |- D" o) E! s  d% E; t, S那么x + 1可以控制的最范围就是[1, 3n + 1]
' m% W  M, C* K4 {% f5 e) M* q, d/ P; N$ W! m) g# X! r

! S' q# e" o( |# y. _# j: s* {5 \$ b4 e' g7 z# q; O
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-9 19:52 , Processed in 0.314185 second(s), 51 queries .

回顶部