QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1175

主题

4

听众

2844

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
1 E+ f' @1 N) ?5 E你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。- D" ]) l/ h  Y9 k% J. B
那么这套砝码最少需要包含多少个砝码?! I5 I3 d! Z/ {3 a: [. u3 d
注意砝码可以放在天平两边。
: O' @( n. g8 O* G2 E2 L: O* ]; ~* p% k0 d0 A7 c# |
【输入格式】* D6 A0 X2 t( o3 P
输入包含一个正整数 N。# ^" a8 j, }9 K3 c! }6 O1 ^

0 |. M" W  w0 |  k, W【输出格式】
2 s5 r) g7 B  C# w' \! g输出一个整数代表答案。
8 K1 I0 x4 L  T0 G  |; x  `, ~1 U+ ?1 ^4 o# l: Y8 O0 u5 B
【样例输入】5 e& w3 Y- A# p/ x
7
% P7 ^# _6 O. W+ ~: x# {0 ?2 n- ?, w( _8 q. L* N
【样例输出】; r1 c# j* O# L+ V* \
3) \* l1 G9 Q) R0 Z# F

& @8 Y- O2 `0 w/ D: e【样例说明】1 K$ n. q& }0 m! r- \+ B
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。, ?! @+ R) f% Q6 B3 _2 ?4 z+ M
1 = 1;
$ R7 a) \; F# l* Q0 s4 \) A2 = 6 − 4 (天平一边放 6,另一边放 4);! Q: W+ G2 |  @) w
3 = 4 − 1;
; j- N7 N2 n* J) r, N# G4 = 4;/ a8 f% N7 h! _& V
5 = 6 − 1;3 A3 U, H+ W( ?1 X0 u& F
6 = 6;4 D. D, n) _8 E6 z) B+ r6 \) s
7 = 1 + 6;$ {  N, z- k* g; e, z; H* g; f
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    6 s6 ~% {4 M. I/ ]8 ^+ d+ e
  2. public class Main {  5 C' O/ q, y) R, ^
  3.     public static void main(String[] args) {  
    ! e9 C/ }% n! ~6 Q# r
  4.         int n = new Scanner(System.in).nextInt();   
    # H\" A, ?. b( x1 _; M+ |
  5.         int maxWeight = 1, minCnt = 1;  - [\" v% s1 }7 T  ?; ?1 _. ^6 }
  6.         while (maxWeight < n) {  - G5 k. u% R- x: p: Y, f7 O
  7.             maxWeight = maxWeight * 3 + 1;  . ~% S1 ~0 Y* h. K/ p+ u. J. T
  8.             minCnt++;  
    ( @4 j8 O, g# Z, u8 v5 i5 Y
  9.         }  0 k# k  v7 m; o9 Y, Q4 H
  10.         System.out.println(minCnt);  
    1 D\" H9 @5 b' o: A; C1 {  n
  11.     }  ! M# |6 w- u1 G! R& Q1 Z# I
  12. }
    ' c4 r' d) A9 p; ]9 `
复制代码
题解
6 h0 `- `8 y5 O, ~" e' \如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
# K. E) M" ^/ {8 A! `此时我们想扩大区间范围就只可以增加砝码
8 n. g( S& [# E/ K, O9 t4 g' m& k/ g假设增加的砝码重量为 k
) }- L# R8 y9 F6 r3 D因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作) l5 h& v' d* x1 l8 [
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
& v" N. e1 B! c- w8 h6 z- J! \! Q- C* o* ^
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围; z' ^8 b4 t. F2 C* [) R
4 l4 `- S: ^: @; l0 d4 Z0 o
另 n + 1 = k - n k = 2n + 1* N0 X8 s+ H: z! q: h% g& Q8 B
那么x + 1可以控制的最范围就是[1, 3n + 1]7 j; G  @$ _: a7 m

) W( h* X* _1 ]* C( |9 ^( W9 b% m/ r3 `1 s* q# O. a* S
6 t0 Y; W2 r! r% J9 o. ]
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-1 11:50 , Processed in 0.277575 second(s), 51 queries .

回顶部