QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
+ g5 v6 h  Y- l- p. p# }你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
6 L% K0 I' v3 B那么这套砝码最少需要包含多少个砝码?' `3 z" D, H1 g. @& f, ^  P
注意砝码可以放在天平两边。
4 Z+ {2 ^& x, l' g* ~; B0 c2 M" B" a( @+ m! t! [2 k8 ~
【输入格式】
; }$ h1 R# i; O5 [& |, Y  M输入包含一个正整数 N。
, h' h5 B' [& h4 b: B% P9 Q8 b
4 @* |4 Q- Y* u9 v( c【输出格式】
/ u4 B+ O9 [/ L) \' I9 e输出一个整数代表答案。& K6 d1 R9 F3 r; [5 e) U

) E# z% e/ B: P4 X/ f; f' a【样例输入】+ s5 u2 |  @, ]( ]' s
7
: L8 {: ~" T% L2 y: R
, R6 C$ Q5 G. I" f5 U【样例输出】
6 Y& k0 q/ _" F$ `3
8 ^! m4 ^4 f6 e& r: U# M6 r( K* W, ^8 A0 e! c' D
【样例说明】
3 u' i# A. A. v/ C! v3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。  n: f* r9 x' C$ Z; b& y/ F
1 = 1;
! R/ {6 D. X3 I+ t4 f: f2 = 6 − 4 (天平一边放 6,另一边放 4);
8 T' V' F' G- V( a1 r3 = 4 − 1;! V' i: R5 U9 `, h) T- x
4 = 4;0 C" i' ^  e& h# V8 K2 I
5 = 6 − 1;* G" B7 m2 w$ h/ u! N
6 = 6;7 ~, N  ^& o, g' r- @( W( ?& B( F. I% C2 |
7 = 1 + 6;5 _3 V6 ]8 r- C8 x  W0 f, M
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    / @- k. r4 Q% H) K7 h
  2. public class Main {  
    0 V' o/ s$ G3 q% U4 F8 o0 u
  3.     public static void main(String[] args) {  4 @$ q9 U6 S4 X. M+ A& M' X  Z
  4.         int n = new Scanner(System.in).nextInt();    3 t6 V7 b1 i' G  R8 X
  5.         int maxWeight = 1, minCnt = 1;  
      Y1 S4 `5 Q; [: ]\" o, z
  6.         while (maxWeight < n) {  4 }' U4 `5 o. x# I3 h( u+ I
  7.             maxWeight = maxWeight * 3 + 1;  
      o$ s7 n& O$ Y' \
  8.             minCnt++;  % _0 T5 z- q1 K# y8 ^( P
  9.         }  2 o4 a& o# R  I: H7 I! O/ A
  10.         System.out.println(minCnt);  
    4 e4 r7 N; j- g* [% q8 F3 F2 G\" X
  11.     }  4 Q; h; B  F4 t. k! G7 E& O8 M/ p
  12. }( D7 ^. K9 G4 z& a' b0 L
复制代码
题解
' w' W5 h9 ^" i! E5 i如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
" ]! Z( Q) V0 I此时我们想扩大区间范围就只可以增加砝码
. V" Q9 O8 ~  n5 Y# J假设增加的砝码重量为 k) t3 [/ e5 c' G: l
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
3 B" Z! e8 D! J' E; V% z所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
7 C) n$ n* u+ J# ]) h# u* L; i0 N3 N7 B9 I" ~2 c
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围! I" z! Z/ u) s

; Z  v3 D& y. T9 @$ O: y- r9 R另 n + 1 = k - n k = 2n + 1
2 r2 G3 [% B0 [3 i那么x + 1可以控制的最范围就是[1, 3n + 1]
) n9 Z. N, b2 m, \9 Z' C* W. E
" q+ n- h, r) {3 l3 \( i8 `8 E" Z# f7 V
7 W. Y) r4 H% j5 M- Y
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-4-15 07:18 , Processed in 0.428505 second(s), 51 queries .

回顶部