QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
问题描述】
- A7 d& x* T1 {你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。9 N; a8 g) E  W- J& B2 T% c
那么这套砝码最少需要包含多少个砝码?
" N% |  d, S( N' K/ n1 B注意砝码可以放在天平两边。
. B0 S: Q! M: X3 |* i; e" u
4 K* A+ @2 [  L: G; k1 j【输入格式】& X+ f0 y' L1 O- X+ ?0 V  ]0 N; ^
输入包含一个正整数 N。
+ v* }+ ^$ |3 M% V6 }
$ F) F3 K# i) ^【输出格式】. R2 ]3 _3 g: K! S; w1 s. O0 @
输出一个整数代表答案。3 Q5 j" n7 g, q0 A# l1 Y) g$ `% _
6 s3 t; X0 s* I! ~" \' r! m
【样例输入】
# l5 }9 B( y5 z3 C$ k" q, K72 G! U6 {4 r; p
/ P4 E( \/ |2 k7 u! i, \# l% k
【样例输出】
+ |" m0 E1 i- [/ x, t3
" Z7 O) u2 ~  s( Q: q- t4 G
. H: E9 M5 D7 }, b" [【样例说明】
7 _1 Y: V' u, z7 D3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。( [/ k, H/ Y: q) n
1 = 1;3 o; r' i# w2 S3 }. C
2 = 6 − 4 (天平一边放 6,另一边放 4);  q5 Y2 L/ v0 H* F1 P7 P( |
3 = 4 − 1;3 t7 i& |/ K( G, [6 ]# q
4 = 4;
! t0 u' u. G# J8 T: y1 \5 = 6 − 1;
. Z+ F' @* p6 Z. N7 Y1 f! C/ m6 = 6;+ I# D0 `# K' \1 w5 l5 H) _8 U' S
7 = 1 + 6;
% U( W, D1 R2 u少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  0 c9 d( y2 G: ?; v0 K! r; q\" t  B
  2. public class Main {  7 [2 S$ {' x3 i
  3.     public static void main(String[] args) {  
    : n8 C' S; t. Z9 ]7 }4 I  o
  4.         int n = new Scanner(System.in).nextInt();   
    # [9 R1 O\" G8 T% r) T  b
  5.         int maxWeight = 1, minCnt = 1;  + C$ A  u! e0 K* a. `
  6.         while (maxWeight < n) {  
    9 q( i, ]: R! Y$ _- u% Z
  7.             maxWeight = maxWeight * 3 + 1;  / T4 V4 K8 ^4 v! w\" A8 D! Q
  8.             minCnt++;  1 _$ L& }, h! e8 v) k! B
  9.         }  
    - s: t4 D& f$ V( W1 K- O& @
  10.         System.out.println(minCnt);  
    + v5 o7 n0 _0 m6 R9 f
  11.     }  
    * T% g6 L4 u\" T0 [* j8 G7 F, ~1 M
  12. }
    2 B* w$ f  d6 E/ p1 W. S: S
复制代码
题解% [9 b  B9 U" G. N
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
8 b! m7 V& n  A8 c9 r$ a: ~9 J此时我们想扩大区间范围就只可以增加砝码
( V0 x* [- S7 ?2 i假设增加的砝码重量为 k
" X6 U; C- t: j* E% W4 ~& v5 _" K0 U, M( u因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作1 n' f7 F: L8 o
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
% E0 B5 J* l( W9 {: d
0 B; }1 N4 \- N9 `1 D让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
4 q. f1 n" Q$ J# ~+ m; V1 Z( ^; J- i$ v9 s/ ]8 Y( }4 m
另 n + 1 = k - n k = 2n + 1* o! @- p; n1 n% u& \# _$ y
那么x + 1可以控制的最范围就是[1, 3n + 1]3 |; p; [, u3 r" Q1 U

/ |. _' n4 L1 b( Z
7 x, r7 }. [: Z3 ~4 c* l& i5 K4 o7 Q$ q# t; O% B, G: d, V
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-8-5 06:23 , Processed in 0.535649 second(s), 53 queries .

回顶部