QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1175

主题

4

听众

2859

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】/ Z) S" L( s$ f7 F) z2 e6 y6 @
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
5 D+ L/ ^" i/ P% @' K6 z+ w, F! J那么这套砝码最少需要包含多少个砝码?
" P  B9 ?7 L! a4 S) Z- a" @, f' w注意砝码可以放在天平两边。: H6 j9 a4 t; H6 C3 a: U' G* t3 V
: d1 r; @: Q( m, V! N+ v; s9 J9 n
【输入格式】
  B) B7 t" A2 j( i输入包含一个正整数 N。
% ], B+ }. L( ~. |* b5 V& r- l+ o/ \9 ?+ F( Y8 a9 b
【输出格式】
% U  w* l' e7 [, |5 Y# b3 z- l输出一个整数代表答案。
2 i  K4 ]% K# I% S" @! S9 P2 _6 F
【样例输入】* m# Y4 o/ t; P6 J2 N" B
7
) _- \& _+ o9 \4 v' C! x( d" D$ y( F* C1 J
【样例输出】
; h- O: v3 U; Z; C: M6 t- ~, v& T3
; P! |7 _& \& o) F6 E
# k% @! C$ y0 |4 a$ `( F5 t4 r3 m【样例说明】
- M4 H6 ?, F9 O  O* @: q  C4 Y3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
8 {9 C( t7 `" [0 h1 = 1;+ g3 }3 A& [, I' m- n: u2 ], X' X
2 = 6 − 4 (天平一边放 6,另一边放 4);
6 C, m8 Z! {4 Q" S. j; [9 e/ ^3 v3 = 4 − 1;
' I* ]! ^5 O* P  Z9 ~: r4 = 4;
  g$ e3 P; H0 a, w4 ~. m5 = 6 − 1;
, N) v* Y! ^7 Y/ I2 \8 {& n7 u' }6 = 6;6 P% M& ^8 W4 ]+ [# M6 }
7 = 1 + 6;
* p* R/ H* r- Q6 P少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    9 i* W8 t- _8 l; [
  2. public class Main {  2 N& v5 @1 R' H( H* Y( m0 E
  3.     public static void main(String[] args) {  
    7 p9 @9 R7 l: `8 Q5 u+ t
  4.         int n = new Scanner(System.in).nextInt();   
    8 E( W0 E1 o4 w# ?3 u/ _) F& K
  5.         int maxWeight = 1, minCnt = 1;  ; F1 J' X% s7 J  J
  6.         while (maxWeight < n) {  , l& W) ]2 G' L7 ]( k6 V4 e6 a! k
  7.             maxWeight = maxWeight * 3 + 1;  
    % _% k' Y  m: z& Z\" z
  8.             minCnt++;  6 Q2 a8 Q# M% U3 y  V3 l
  9.         }  
    ) X& o% z5 G% n% z! C6 O
  10.         System.out.println(minCnt);  
    ; z( `9 I; F\" S\" B6 ?
  11.     }  
    - h* k1 ^- a3 U4 A. g$ d
  12. }+ o: i8 N0 V\" d. B% Y
复制代码
题解/ U$ ?( [  ?" e- F7 T& {
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个/ ]7 x! U4 ~, v9 r* Q, d1 l# {
此时我们想扩大区间范围就只可以增加砝码  X& ^' p, F9 Y# ?4 B& S" \
假设增加的砝码重量为 k( r# p& ]/ _3 c
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
& H0 l, @& n1 F/ V6 W9 O所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了# J5 L0 h; g) o* |; C8 q/ p
$ y' o$ s1 P# _3 d# q+ N! F
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
5 _4 E/ H' w+ J- c) X+ J2 z1 X1 K8 p, A6 ?7 _
另 n + 1 = k - n k = 2n + 18 w. i3 I4 Y2 C/ ~& S: H
那么x + 1可以控制的最范围就是[1, 3n + 1]; p: Y5 E8 r- e( h' P
3 j4 E$ h( Z) d6 S9 S( W% J* |! v8 r

5 Q) p; r: W& w
# a  J( N) C1 n( J$ \
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-8-7 18:43 , Processed in 0.424679 second(s), 50 queries .

回顶部