QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1175

主题

4

听众

2828

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】" X) D0 N5 }3 f9 [9 ?
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。4 A: ]9 a0 R+ z5 ~3 Q- n/ E9 P
那么这套砝码最少需要包含多少个砝码?" m: }4 G7 q) `1 \5 a1 |+ o: O
注意砝码可以放在天平两边。! W! P8 e& v! R  [' P4 N: }: p
7 e! D5 X2 r6 V  ?/ a
【输入格式】" l/ n9 A! q* P) @- M( o2 D2 k
输入包含一个正整数 N。
4 T6 _, b0 \# \6 N
, `% R4 y. f) ~% s: w" X/ o) D4 N( I【输出格式】
- ^, D' E- U) d) F9 Z输出一个整数代表答案。5 O/ F/ v+ T: \4 Z. T' ?- [
5 i$ e, z. O5 k: @, C* \
【样例输入】
, i5 H. O9 x5 B9 a$ S9 u7
; I6 T- Y4 {& p! K3 e; ~2 i8 e3 S, l) h/ }" Z
【样例输出】/ B2 j) j" d" d" m) `- l
37 B6 @" X4 |! H8 t

2 R& I  S  b; M: r9 P4 \【样例说明】
7 \' _5 u- N! @; x3 J3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
7 J; C8 c2 Q* {# R; i( J) ^2 F( H1 = 1;5 j" v( g+ ^% L/ R/ @
2 = 6 − 4 (天平一边放 6,另一边放 4);
0 o3 I) d) i, R" `) \3 = 4 − 1;& {" q$ ^6 D$ n, S% K8 }
4 = 4;
0 ^" K+ K. M* _# z* z5 = 6 − 1;4 @  T5 o! G( o+ K0 P* X$ t
6 = 6;
0 I  |, h- b( Q+ Y3 Q5 L7 = 1 + 6;6 l# \0 f5 I, Z
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  2 {  Q\" V8 }1 u  w( O; k. X' o
  2. public class Main {  4 L! F# r0 S5 O& l
  3.     public static void main(String[] args) {  9 N7 \) R/ B; C& ~
  4.         int n = new Scanner(System.in).nextInt();    / L0 K4 p4 L( u$ p! ~5 M, [2 d
  5.         int maxWeight = 1, minCnt = 1;  
    ) \9 A* P\" m\" l
  6.         while (maxWeight < n) {  7 D  }& Q: W0 s& x, S' ]9 g
  7.             maxWeight = maxWeight * 3 + 1;  
    $ N( D* k# j* F$ W7 N. C* Q
  8.             minCnt++;  0 m: K' _. P/ K( d
  9.         }  
    5 ?! o$ E7 B1 Y$ }/ l
  10.         System.out.println(minCnt);  ( g6 C: ^! N0 V2 W1 V  v
  11.     }  
    0 T6 J- P' w/ n0 \9 d
  12. }# E7 Y, {9 L$ N
复制代码
题解
& T' j& T' _9 h6 u% k- u如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
0 m$ A% {% S7 w: w) P0 o  n' e此时我们想扩大区间范围就只可以增加砝码
# R) p0 r+ g- I7 l: U8 c/ @假设增加的砝码重量为 k
( E# j: p* V2 H7 J  K因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
  d% R0 F& W3 S; A  S& A+ v0 d所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了: Z6 y! O9 x; F
. n/ `3 W$ e3 [- p3 \: N/ @
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
0 r6 o. W. ^0 _: u* Y( s0 v6 ^- n3 z0 X( a0 u' G: \0 m0 A
另 n + 1 = k - n k = 2n + 1
" G9 L/ p$ @) P- B9 X那么x + 1可以控制的最范围就是[1, 3n + 1]
- W0 B: b" L- s% r$ D: J% H
7 i. I' t) l: j& M% Z* a) G1 l6 l3 b) r$ b+ J' M

( `  m$ t4 c: S$ v; l" X3 @
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-7-24 09:34 , Processed in 0.768256 second(s), 50 queries .

回顶部