QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
2 [1 o, B6 p' w* h你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
& {1 w" r+ f; Z8 f0 T5 w6 O+ B那么这套砝码最少需要包含多少个砝码?
, j! F6 z* F$ Y- Z% }  P! l# T注意砝码可以放在天平两边。6 B  f7 W  k5 K+ T' Q: U1 `

4 K# T1 M  ^% G; B1 O, S【输入格式】
9 o, I9 J! }* \8 C3 [# s: T输入包含一个正整数 N。# \3 L' y, }# b& {  \, l* H
5 X3 d4 V$ N* v, y3 z+ @. G1 J; c
【输出格式】+ h3 L3 j* _% ^6 v/ j
输出一个整数代表答案。
: N; B/ t" b2 R3 I$ ]7 R; B
0 q" V8 @0 F! ]【样例输入】
6 s! Q+ G) g+ }+ [7
2 M' I% `" {; o: Z# F, g
  Z9 n2 B7 C5 F4 M【样例输出】$ b* m4 G: a5 r) p) f
3- ?; X$ y6 p8 r+ T! J2 D
0 E9 c# d5 I6 }8 |( M" [6 p3 c! r
【样例说明】
8 H- ~+ t& f+ `) M3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。! J4 M+ H* ]7 e1 b3 V. Z
1 = 1;
( D# g0 C; L3 `6 E7 v2 = 6 − 4 (天平一边放 6,另一边放 4);/ w( u5 y9 S  {& f
3 = 4 − 1;
5 b) ?$ q4 R' F) [% w4 = 4;
0 s+ ]9 C: ]! V: P$ `5 = 6 − 1;0 w& X" ]; R' _1 Z4 ?# E7 L( `
6 = 6;
6 j3 x0 K3 L. ?9 {7 = 1 + 6;5 c$ b: U0 _& ]6 Q
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    ! w5 \) n! s/ e, m; o' @1 N! A
  2. public class Main {  1 s0 F3 x\" v2 i& ?\" s& h: ]( C/ E% h
  3.     public static void main(String[] args) {  ) u+ G0 L, D5 Z9 e0 V
  4.         int n = new Scanner(System.in).nextInt();    6 y! V% |& c& P9 ~( j
  5.         int maxWeight = 1, minCnt = 1;  ( P1 ^+ I5 ~2 b0 T& S( J
  6.         while (maxWeight < n) {  \" f- s& U2 j$ h3 ^+ o# W4 a4 U
  7.             maxWeight = maxWeight * 3 + 1;  
    1 Q\" Q6 W! R; F, L* b
  8.             minCnt++;  
    5 g. R3 _\" M$ W' o# i' o+ w
  9.         }  \" [: _. l- ]6 k/ I& `
  10.         System.out.println(minCnt);  , \& H0 b' C6 `
  11.     }  
    . Q' x7 y/ g\" R9 F' ~
  12. }, `, d, F' f\" T5 J* Y+ i
复制代码
题解
! o. _/ O( _6 F+ ]. l如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个$ r8 G  I- T( b1 i& ]- H1 Q
此时我们想扩大区间范围就只可以增加砝码5 P  E( g7 v( x% x
假设增加的砝码重量为 k
( b2 B1 l/ F% E! g7 }+ _因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作- ^# }& q6 b" }( d
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了/ i4 x9 y& s' r! a0 A8 D
2 d& B8 g7 M* D: \; R) A" J7 H
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围5 X: A- K6 Q7 E7 @; p9 J( r( K
; F0 A. Q$ C! \: g7 f) ^3 p9 U5 }
另 n + 1 = k - n k = 2n + 1
1 v8 v( e8 |4 J6 A$ H5 e那么x + 1可以控制的最范围就是[1, 3n + 1]
% g0 v. k" ^! s0 |8 a6 V( {# y8 f( `- y$ k4 P
8 U- p3 s+ U# w( V2 j1 q
2 M" H$ R. Y- k0 p, ?
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-10 02:53 , Processed in 0.578973 second(s), 51 queries .

回顶部