QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1174

主题

4

听众

2801

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】
5 g( @6 U3 x8 _* N# m/ n" X你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。
& J& n, X% }2 Z# t" O那么这套砝码最少需要包含多少个砝码?9 W2 }. C/ J: z$ G* [2 Z6 z) |8 j
注意砝码可以放在天平两边。; Q5 R& o- S* e0 m+ w' E5 k

( @# M# I) E& i! I3 q【输入格式】5 D9 r0 j/ R$ q6 S2 I0 B( X: w
输入包含一个正整数 N。$ E/ U, x. s1 D# Q1 J
  O: L2 r% {2 }" B
【输出格式】
% [& x9 D3 ]' t输出一个整数代表答案。
  R- O! u1 @  m9 O6 s" Z- h
; T: Q* \' o6 \. T) i5 ?0 p【样例输入】( A7 H  M0 R( _, u% ?* O% r0 T9 _5 V/ ?
7
! L% D- ?3 h/ s8 ~& n/ E" J6 f4 b' H3 V/ |5 j3 s
【样例输出】
! h: j) [) D; S5 I34 ~: Y5 v& ?3 N$ A! f3 Q1 M

3 }) y; F% z; H$ C7 ~【样例说明】5 @. X! e" r6 o5 ?
3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
  ^4 f. p6 d5 t7 ]* v4 g1 = 1;4 y/ q" K3 M2 |& L
2 = 6 − 4 (天平一边放 6,另一边放 4);" ~7 S" _9 v7 u# J* ]
3 = 4 − 1;  ^! w4 w% @: }/ O5 u
4 = 4;/ c1 d. v2 ^5 B6 D& a0 R" n
5 = 6 − 1;
; y4 I+ T1 j( R7 p- j. Q4 g6 = 6;% d; H2 \5 a1 m0 Y; w1 S1 Q
7 = 1 + 6;- _" o: ]: O! Q/ K9 P4 |
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    4 w6 k& h9 k: t, c' d
  2. public class Main {  
    ) E$ o) A# [/ ^) {$ M& Y
  3.     public static void main(String[] args) {  7 V( h8 Z7 w! ?
  4.         int n = new Scanner(System.in).nextInt();    , f( L  p8 x\" U/ [: Y8 V  \$ M
  5.         int maxWeight = 1, minCnt = 1;  - S8 u! t. N\" R7 m0 \
  6.         while (maxWeight < n) {    x* Y3 v% l  A+ y3 P( @8 \
  7.             maxWeight = maxWeight * 3 + 1;  # B- g+ J+ L+ _7 U+ U- p1 P6 C
  8.             minCnt++;  ; f& N) N3 Y# ]' ?2 `
  9.         }  
    # E' O9 G! T. F- ^) A
  10.         System.out.println(minCnt);  
    5 @; p6 n2 L) L0 j* j# x\" q
  11.     }  
    3 h+ r7 X% v* `/ G, r+ v( |& x
  12. }
    # _3 a, Z' R) u\" X
复制代码
题解0 P+ H; T9 ]" v
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
+ X6 ~3 a% Q; t0 t% j) L7 r9 x此时我们想扩大区间范围就只可以增加砝码1 ~9 r4 g, t. p
假设增加的砝码重量为 k" g3 W/ p* A( {  c* Z- t9 W9 R  N) |
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作, {* D& p; O; G# K$ j
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了) u: R: H5 Q7 ^0 R% S7 [7 h1 Y

- O/ X/ {* y) J( `- V2 I  z+ A让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围6 F2 j/ n, F" ?" T! F) C( X# ]

# v2 W8 N) W' C/ d9 m: i另 n + 1 = k - n k = 2n + 1
3 c& d, I! U% J) i& ~  l) L( l那么x + 1可以控制的最范围就是[1, 3n + 1]
$ _1 B5 C& _5 B' F; U% p+ q8 B& e3 O) i. F( t9 a
6 w& l; i: _) [; e# a# g

9 ^, e0 q. k6 f0 ?  ?  [
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-7-2 23:38 , Processed in 0.459278 second(s), 50 queries .

回顶部