QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】1 r& J2 Q0 g& [- ?) N0 v+ m
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
  c' e5 ~/ O- K" \$ `7 S; u那么这套砝码最少需要包含多少个砝码?; N4 q! [8 n; ]4 j; J
注意砝码可以放在天平两边。1 ?0 b: e  j# G8 F5 K: k

# K# q1 p3 T3 Z" W* X【输入格式】
$ U  h% O4 H. h6 L输入包含一个正整数 N。
/ V) B6 u, x5 D! z( K9 V* o
; H* O/ V* s2 Y; G2 I; k【输出格式】
. o+ \7 v" V" M  W. Y/ e+ r输出一个整数代表答案。
8 U& c7 H/ A# Y% v6 }, s4 n% r" B7 O
【样例输入】
- ~5 K* S/ z, q2 E, c& c7
% R8 p7 ]9 R/ ~( b! G, k7 K4 N' B7 ?$ a
【样例输出】; k# G, F; ?4 @* M
3% X* [2 J' s& Y- `9 Z' L
/ v4 ^$ \4 {1 _3 R. ^
【样例说明】
8 y& Y6 P: R$ D. S# C' q9 t3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。4 J& m; c3 N/ y
1 = 1;
- k0 W- Z- t% z" w2 = 6 − 4 (天平一边放 6,另一边放 4);) D/ c6 h* L2 \' Z& ^9 v
3 = 4 − 1;4 [* ]* Q4 Z& r( r
4 = 4;
- T; Q; J2 P$ E5 = 6 − 1;
8 L, T) M2 L% p' G/ F. e! _6 = 6;
6 l1 q; U: h' b2 P3 g7 = 1 + 6;( h+ b# a; _! W8 i2 R) J6 z
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    % \9 C7 \. \( M) {) j- I8 F3 J\" b
  2. public class Main {  ) U2 o( A* M8 c
  3.     public static void main(String[] args) {  - C3 |( G+ H( I% _) A- C
  4.         int n = new Scanner(System.in).nextInt();   
    ) U) Z2 R4 f) K! o
  5.         int maxWeight = 1, minCnt = 1;  2 X9 h  i# j% K) W
  6.         while (maxWeight < n) {  , `7 ^$ J  E6 j. C
  7.             maxWeight = maxWeight * 3 + 1;  
    + ]/ _6 O2 |& l7 m
  8.             minCnt++;  6 R, \8 {1 k+ {% y
  9.         }  ( t' ~$ ?' n! G# E8 z- X) V2 v; \
  10.         System.out.println(minCnt);  ; d\" @\" W+ q. b# r
  11.     }  
    4 A6 Y1 l; T' A  a# }* h7 b
  12. }
    ' @0 m9 m5 u3 I% K6 q) Z1 a
复制代码
题解: K$ F& G) _. V" A9 W
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
! _" r" n, h9 L/ b此时我们想扩大区间范围就只可以增加砝码
8 V9 W8 `+ E6 ^7 F0 N假设增加的砝码重量为 k8 j! O, |2 o6 @/ C' E% d
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
( ?$ d/ Q. o3 f; B7 k所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了- i4 B' P# A$ x

: _+ R7 D  X3 l0 ~; c2 B让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
/ e" `: E6 P9 C# P" h2 y* b
* ^  \9 ~9 |5 }+ s另 n + 1 = k - n k = 2n + 1
* S1 D. `& K: m2 p5 l. e那么x + 1可以控制的最范围就是[1, 3n + 1]
; W% e% |# ~1 S/ z! h+ S+ U, d4 z7 n+ g9 F6 Q" ?- p1 w

. U. M5 l3 K' S; ?+ K
: B0 P$ Z& a$ y2 @. o( c
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 08:31 , Processed in 0.433655 second(s), 50 queries .

回顶部