QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】+ _& A% }- K5 F4 n3 }0 X' D
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。* F1 }9 I8 T, @2 @
那么这套砝码最少需要包含多少个砝码?
( a  ], l. Y( [2 Q, c. z注意砝码可以放在天平两边。
$ ~8 R2 M+ \( x" B0 V  P$ A- R- i3 w) U
【输入格式】
5 s  x- P6 P2 Y$ _) Q8 q输入包含一个正整数 N。
' s+ i' i2 J  h$ W% M- v6 e! g7 D* \0 e; I, ]9 J2 S
【输出格式】2 C, w2 Y; e7 U4 A; L
输出一个整数代表答案。. O2 x8 d) a' E/ p

: \; @& r8 }1 Y; |% Z2 o' I, e8 E# |【样例输入】* r5 w; F. I6 F! @. @* z& H$ M
7& U. {9 ^$ U  C0 J) w

( c$ |6 v0 Q# v) w" _【样例输出】
5 m3 }' A; {2 x3+ B3 M. |/ E8 Q( o: S

' Z2 D6 C+ ?. a5 a# H+ x【样例说明】& |% Q3 ^: f$ Z5 t. C$ r' n. W
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
5 O  X" _- O5 t: S1 = 1;* r- t4 W5 V( S: h
2 = 6 − 4 (天平一边放 6,另一边放 4);' J: P8 \" M1 @; V, v# p5 f8 Z% K0 G
3 = 4 − 1;
5 x% g0 W, @5 X( F4 ~4 = 4;! i% j& I9 n# I* x, s
5 = 6 − 1;7 C  x5 K" p) [! _8 N2 f3 j& {1 }
6 = 6;( e. X' ?, ?& k" \, h5 }
7 = 1 + 6;$ I/ E% E+ q1 ?0 {7 S7 x
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    % Y! o& }% `/ N9 Q3 {' u) {( c
  2. public class Main {  
    - i* @' ]& m7 }% s
  3.     public static void main(String[] args) {  3 J4 W! C% j) t* p0 P
  4.         int n = new Scanner(System.in).nextInt();   
    & |' R2 o! V0 Z$ d' F: M
  5.         int maxWeight = 1, minCnt = 1;  
    / o' L. A0 b' h( G. \3 |) I
  6.         while (maxWeight < n) {  : `) R! H# i4 F  ?! e
  7.             maxWeight = maxWeight * 3 + 1;  4 t! a# @1 B, z+ ~5 c0 s/ h/ S
  8.             minCnt++;  
    , E  Q; J/ p+ q
  9.         }  , z$ b# ]) Y8 P2 t3 A# `
  10.         System.out.println(minCnt);    F2 F) _+ X. ?( S
  11.     }    l\" o* H\" d\" ^1 }9 M1 \+ G\" p: }8 N6 q
  12. }8 q) D9 _$ n- e\" |& v+ U% b
复制代码
题解; @* v: r2 m& {; g
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个$ T1 [( ~" I( ]) G. Z% }' A+ v1 ~- O
此时我们想扩大区间范围就只可以增加砝码5 O( @7 q: @# I) R. t
假设增加的砝码重量为 k
7 W$ u% f. c5 e7 Y, h& M) z6 ^因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作" g* V& Z) O; v: I2 z
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了1 U, l: {6 b5 `0 J

# o. G# b1 ^: J+ e让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
$ N, j3 y' d) n& e+ i/ u5 _
+ k. M" g% J) _另 n + 1 = k - n k = 2n + 1: H8 Y) \- S9 Q" H0 \
那么x + 1可以控制的最范围就是[1, 3n + 1]
; `, [5 m- c. p9 H6 D# O+ d$ y4 a' A9 h. O3 [* p5 C

& r3 D* Z# N  k7 D" G7 }
& ~1 p% k0 `  M
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-5-28 09:12 , Processed in 0.280983 second(s), 51 queries .

回顶部