QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】4 y8 T: P. h1 B+ O3 }; o
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
! K3 Y) \4 G6 A+ o+ \$ s那么这套砝码最少需要包含多少个砝码?
; E: ?+ ~& y0 {- g" Q注意砝码可以放在天平两边。( x5 x% d6 e/ F* k  h

! @) S* Y7 E3 a# j. P' a【输入格式】0 z* {( i! k: C# o" J
输入包含一个正整数 N。0 K9 @- L9 Q, }$ D- v

) M2 ~5 |* T* @" ~4 M& X  [【输出格式】6 L7 U. U# [' A9 C) o5 Z
输出一个整数代表答案。
1 N- C& j4 i7 G# s8 I. T: E, o9 V! U
6 n6 J+ N' r+ o【样例输入】' m& h. X# [9 Z! a6 Q
7$ L+ q* G  ^* ]  @% j
; i7 R& k( v. G
【样例输出】) z7 d7 S1 u7 l( F
3
6 E* U; m& Q* K2 _, g+ \; G7 P, r% q* ^/ Y* y3 }
【样例说明】
1 x- k2 }* E+ k( V3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
) A+ {5 @4 i1 ?0 Y, ~1 = 1;4 T) C9 v1 ?4 \7 H3 L
2 = 6 − 4 (天平一边放 6,另一边放 4);
$ B6 `, W, L! l3 = 4 − 1;5 B. `7 z( L* x) N" j
4 = 4;6 e) y) M8 q# J/ V5 n0 Z% h& Q
5 = 6 − 1;& _( N  u: D/ T3 Y9 Z. R! Z! M
6 = 6;
2 u7 i; s! A, N7 = 1 + 6;
3 E# S! r; m- P( Y# G8 \) v少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    9 p; B8 {4 _$ S7 ]+ W0 a
  2. public class Main {  ) i( s% g: t# Y0 \9 Q$ R
  3.     public static void main(String[] args) {  ( U9 R2 C( W/ A; \, a
  4.         int n = new Scanner(System.in).nextInt();   
    * X- Y/ F/ x# n. Q6 e+ A5 \7 m3 v) K
  5.         int maxWeight = 1, minCnt = 1;  & K: ^# B  I\" S# P$ r  {4 v5 T& W
  6.         while (maxWeight < n) {  
    5 q\" V0 S0 X, v( z3 f8 K) \) g
  7.             maxWeight = maxWeight * 3 + 1;  # i% m* L! q7 d4 ~% @% m' I
  8.             minCnt++;  , F  m7 {6 V& l& R# r' _8 q
  9.         }    A! f\" y5 x$ C
  10.         System.out.println(minCnt);  
    % {# o' K( {/ p% z( x8 P5 s; M* ^
  11.     }    }! c% F+ R: _9 a  }5 ^3 H\" h
  12. }
    / h% f/ p5 N% M& e1 e& S4 A) A# l
复制代码
题解
% k8 E) \+ [! j6 f如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个% y/ P9 B- ?& c+ ]" I2 N) T) c
此时我们想扩大区间范围就只可以增加砝码
6 {- x2 J7 D* T$ H9 d假设增加的砝码重量为 k, o1 k1 u# j  l2 w- y
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
& M# P* K5 o% r" P9 K所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
& f3 ^3 \% g$ f* s! o! T) y8 \5 f# r, ~  S
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围, s3 S: d8 I4 e1 t( U3 v( U) q

- x( V* J+ R/ n2 i4 g/ d另 n + 1 = k - n k = 2n + 15 Z" _9 x/ Y9 f. ^/ n
那么x + 1可以控制的最范围就是[1, 3n + 1]8 r0 I9 a/ @- L9 X% }% y

: g, U9 E  b$ Z! P- y1 U4 M3 I: X1 k/ N7 B
, a2 m0 U2 L: G. i
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-13 18:41 , Processed in 0.332182 second(s), 51 queries .

回顶部