QQ登录

只需要一步,快速开始

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

最少砝码 Java解决

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-29 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题描述】- `9 N. h8 D  {% r
你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。0 `1 o9 A% F8 V6 s  n3 Q' H
那么这套砝码最少需要包含多少个砝码?
9 V& I7 n; @8 ~$ t: w+ Z注意砝码可以放在天平两边。- [# L7 ~0 q$ [* _, Q; h% a

; Z6 h4 Z! F( y# h! m( L【输入格式】6 L& x1 u+ d, s, j
输入包含一个正整数 N。/ e6 r  ^0 C/ \4 R
2 j( |3 _- v4 X* o2 o" m
【输出格式】
. l9 K. \! h1 ~( s* U- H9 p输出一个整数代表答案。
  g; ?; ~. s! U6 A  n' l+ D
: d  N9 Q" Y7 C【样例输入】
1 q! N4 M- x+ S7 X2 N7
/ V1 f4 n( L0 }0 B1 n2 w; g+ K% U* L
. Y  u+ c. ~9 D$ r! R# k, Z【样例输出】
& `! G- ?" \: Y) ~* d" u/ ^6 h3
8 p; H2 \+ ]8 O" e7 N9 Y) R! X4 L! K# |/ c+ N1 P' Y& h1 a4 U
【样例说明】
( [2 {4 x# p4 \$ I- j/ P3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
4 z6 H# h" F1 i' ]- P7 k1 = 1;. H) Q/ v8 q/ J7 `7 q- b! I
2 = 6 − 4 (天平一边放 6,另一边放 4);( I) f! ?$ j! P0 @1 n+ r
3 = 4 − 1;! d; S2 C' Q! `( E
4 = 4;) z8 c+ S) Y( E4 A8 B1 q. P' ^
5 = 6 − 1;. U% W( P( U- X7 U8 P# t; V. |
6 = 6;7 `) f* ?' A# I5 V# u! w. d* Q) r( D1 X+ ~
7 = 1 + 6;7 g' C/ a% L0 r7 {0 i
少于 3 个砝码不可能称出 1 至 7 的所有重量。
  1. import java.util.Scanner;  
    $ q2 Q. V' _5 T
  2. public class Main {  
    # ?5 E4 w' g# }) s\" ^; q, ^5 g+ b  m
  3.     public static void main(String[] args) {  
    . J0 u8 x% L( q/ Y) u. P+ Q# k
  4.         int n = new Scanner(System.in).nextInt();   
    ( M) R6 ~; X; ^/ ]
  5.         int maxWeight = 1, minCnt = 1;    e7 y, x  b  Q+ N2 n
  6.         while (maxWeight < n) {  3 K8 _  V$ V) y) F+ U
  7.             maxWeight = maxWeight * 3 + 1;  
    1 J5 _. p; u) Y
  8.             minCnt++;  
    3 b/ G\" O( O8 |# [
  9.         }  # g* F! n- E- |5 ~3 B* H; B
  10.         System.out.println(minCnt);  ( J8 z1 J4 S\" W: O0 B8 p
  11.     }  
    1 W  {5 U/ X- ~8 v0 a
  12. }
    3 u3 [' C/ ?; [/ \& D! w
复制代码
题解7 O0 q$ H+ h0 H( M) E
如果我们可以控制的区间范围 是 [1, n] 最少砝码为x个
: P  V! z/ h/ s* |: }3 k此时我们想扩大区间范围就只可以增加砝码5 m" U9 |" d5 e6 b( u# o  G+ [
假设增加的砝码重量为 k8 p: o$ b, G6 P- [( Y/ T& q
因为我们可以控制 [1, n] 的重量, 而且因为可以把砝码放在左右两把, 想当于我们可以进行加减操作% ]# Z9 c2 m, ?, c& T4 n
所以新增砝码后, 我们又可以控制[k - n, k + n] 的区间范围了" O+ s8 X" J0 i

  c. {$ S1 }& Q, k" _1 j让这个新增的控制范围 与 我们原来的可以控制的范围相邻, 就得到了最大的可控范围
& X( K( i% z6 H4 S4 [
% E0 v+ H: F) J8 h' M2 s  \另 n + 1 = k - n k = 2n + 1
& n3 W) |3 p( U5 R0 F那么x + 1可以控制的最范围就是[1, 3n + 1]
, Q1 z6 t) T+ h. o3 f
: d: j4 U, a3 o7 p+ D9 P. I5 j& D
+ {  e6 A: M, x9 l2 Y( B7 `' k( k* P% ~0 W
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 08:04 , Processed in 2.414996 second(s), 50 queries .

回顶部