QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1176

主题

4

听众

2887

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】$ Y5 Z2 B: \  f
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
5 Q: W1 H. x; _4 ]7 @6 Z( S那么这套砝码最少需要包含多少个砝码?
+ y. ~$ A" U7 z/ Z- F注意砝码可以放在天平两边。
! a7 s) J" B3 Z
! k+ h" l1 x/ F) D. g7 J【输入格式】; \% K9 ?. h& Q8 V- G
输入包含一个正整数 N。; Y2 h$ D" @0 V3 [

$ `& \% F. A" k7 i【输出格式】8 @8 ?; B/ [, f  a6 d
输出一个整数代表答案。: j; o* P$ j& J) P+ }
( \0 ], \) ~( R# }: z: V
【样例输入】
$ P; b1 \* x/ g& m" G8 f) y7
8 p3 e# _# U, Y: t& c3 Z+ ?! T
' t& q# C2 M5 p7 }2 P: w【样例输出】# t1 [4 m) q- N: w" d
3
) v! L% T2 p: ]0 e0 M9 h
0 E: G5 b* C$ T" ^1 j5 F% y【样例说明】1 ?; u5 ~3 \' n+ `7 x5 U
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。4 W8 Q: q# l* K8 T- X2 @' J1 \
1 = 1;
3 |! d4 [5 v. b( \) R2 = 6 − 4 (天平一边放 6,另一边放 4);1 `" S: ?! x- D7 _, Z  h2 u3 M
3 = 4 − 1;8 ?  h. d' a  f& r5 y8 J
4 = 4;
  K7 l0 ]# J1 P9 `5 = 6 − 1;" ^& y  B7 p; e6 m
6 = 6;: R9 e8 c0 E1 T+ F+ X
7 = 1 + 6;' I0 y/ E  N9 u' |, h' q
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  $ ^! f5 G/ E/ v% Q: Q; Q
  2. public class Main {  ! w. b$ ]- Y2 B
  3.     public static void main(String[] args) {  ; v3 |2 a4 D: g* }' C
  4.         int n = new Scanner(System.in).nextInt();    ! X$ R$ h2 b) m\" i, P, K2 P
  5.         int maxWeight = 1, minCnt = 1;  
      ]\" _) K! i4 w+ l
  6.         while (maxWeight < n) {  ( y$ D( }5 v$ V
  7.             maxWeight = maxWeight * 3 + 1;  1 t+ w( D3 |& F- J
  8.             minCnt++;  5 {, A1 r\" c! G! E
  9.         }  0 r5 t/ _5 E3 @; \6 S) C
  10.         System.out.println(minCnt);  
    \" e9 k9 W. |/ g\" _* O' u! R0 B
  11.     }  
    ( D: I0 @8 c* m6 U* v+ V4 m
  12. }# V\" D\" z\" J+ `9 {; D
复制代码
题解2 F, Y- G, ^& c3 c. V% `7 d3 L
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
/ R* I( C- C8 x此时我们想扩大区间范围就只可以增加砝码4 u# `* H! I9 q# R3 r1 F7 ^! _# W
假设增加的砝码重量为 k
( m8 o1 c" X" \& l! e, v因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
- Y; G/ P8 [4 B+ A; i7 @2 u/ |所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了
0 L" K2 n; c' a9 F7 V5 s0 i" x' ]
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
6 i7 c7 A# m! G# r  v, I$ t; {4 g2 |0 {# d' G
另 n + 1 = k - n k = 2n + 11 q# m: v: [3 R% Z& ]! Q/ T, ]
那么x + 1可以控制的最范围就是[1, 3n + 1]8 R# W# T; h, e* b
2 d, Z( E, |. [7 @! V& \* K

' H! C, g8 K: F7 B1 S. n) Z! ?" {) K  O5 a5 R% 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, 2025-11-7 10:29 , Processed in 1.580816 second(s), 50 queries .

回顶部