QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
问题描述】$ [3 g2 v4 s0 B& [
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。- i9 W1 e, r! _( }( X* u
那么这套砝码最少需要包含多少个砝码?3 K! h8 ~& N0 W5 D  t: b
注意砝码可以放在天平两边。
1 q5 i( l5 T+ ?4 G, T
) V' T/ {+ y, Q  z9 i' A: b4 Q【输入格式】
9 u# s9 G0 B& ~) g5 a输入包含一个正整数 N。* P: a  ?, E: ~8 L' ~

* `# Y$ g/ `* n2 [- {【输出格式】
  n  O- A: r) \8 d% X% q输出一个整数代表答案。- ]/ U0 o3 m6 @2 u; b0 d; R( o" L* g
+ @/ J( J  I  f2 O0 B! t/ Z
【样例输入】
! {, P9 y/ Z* a: |: Z8 r( ^7
2 A  f9 ?; F9 |% @  R% K6 m" G* x8 _% @4 n
【样例输出】
- p- ~6 z0 s0 B3 S3# a* \; L- g6 w$ B- H

+ q  t) h1 Q+ }% p- s/ {【样例说明】
. s2 e& N7 _3 h$ h7 X3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。% y9 |) P3 N3 {6 ^
1 = 1;/ s! T& D% |1 k8 R
2 = 6 − 4 (天平一边放 6,另一边放 4);1 E* W0 c9 ^6 O
3 = 4 − 1;1 N- {/ Z2 j8 ]+ r" b6 i
4 = 4;. z% y7 W" m3 Z1 e
5 = 6 − 1;
3 W1 f0 k) {% a6 d5 Z/ r6 }! y1 I6 = 6;
+ x2 r$ @2 l4 L' d& O0 ?- B- |7 = 1 + 6;" @  Y# Q4 X. Y; }/ o
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  8 Q  I7 t/ r, u% m0 f- _5 g
  2. public class Main {  & O5 q- l- w6 m1 `& K
  3.     public static void main(String[] args) {  ' n& D+ m6 a( ?* T% p
  4.         int n = new Scanner(System.in).nextInt();   
    % Q' v! T# D, ~( E1 X* ?* @) Y
  5.         int maxWeight = 1, minCnt = 1;  # Y# L+ S; f: q- A& h  c  T\" q6 E% j
  6.         while (maxWeight < n) {  & x- }: g; V  f9 D- Z3 s
  7.             maxWeight = maxWeight * 3 + 1;  ; ]5 P; l3 S- a3 ^
  8.             minCnt++;  
      u. X* X; |9 ^, x! K6 a
  9.         }  
    3 A/ [- L2 u# V. t7 e7 W# I
  10.         System.out.println(minCnt);  
    , |/ F- j+ M3 v) N1 [. ~
  11.     }  # \' @9 R4 Z2 q0 G: i
  12. }( h1 Z; ~+ i5 v+ m/ z
复制代码
题解: o" K& y9 E: D& b9 W; N
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个8 Z) H+ H, {9 F8 i. r8 O/ f
此时我们想扩大区间范围就只可以增加砝码
6 p# t' s4 i+ @假设增加的砝码重量为 k" O- J" ~9 d3 C, C6 S' b1 u
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作
+ e* `. }9 F$ j5 c7 e0 E, h所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了* ]" p# I/ o& z# A# `+ ^9 W; V
- u8 U, l; H& ^" f2 i! q1 V
让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围( a' l- A" g# ~" J  _9 o; v7 Z

; N8 K) A. G% v# A5 a- M& {% f! X, E另 n + 1 = k - n k = 2n + 1
' u& p% a" F( r% B; d! E那么x + 1可以控制的最范围就是[1, 3n + 1]" q  P5 V0 b( S; U4 X( G' ?

4 y' d2 k) I% o9 g" c: E' r& j+ X# u3 W
. m3 J! R$ D/ D; p8 d
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-4-13 11:40 , Processed in 0.458228 second(s), 52 queries .

回顶部