最少砝码蓝桥杯真题python解法

题目描述

 解题思路

首先要搭配砝码,砝码重量为1肯定是首选的!

题目要求我们选择最少的砝码数量,我们肯定要在能称出来的基础上选择最重的砝码!

当我们选择一个砝码时既选择重量为1的砝码最多可以称的最大重量为1

当我们选择二个砝码时,我们选择重量为1和3的两个砝码,为什么呢?

选1、2的砝码可以满足1=1,2=2,1+2=3
选1、3的砝码可以满足1=1,2=3-1,3=3,4=3+1
选1、4的砝码可以满足1=1,2=?无法称2,不合题意

我们选最重的当然选3,这样1和3就可以组合出1-4的重量也就是最大重量为4

当我们选择第三个砝码时,在最重的基础上我们一定要构造出上一步最大重量加1的重量,上一步的最大重量是4,所以说这一步我们选出的砝码重量搞出的组合至少得是5,这样我们3个砝码才能称出重量为5的东西。由x-4=5可解得x为9。所以我们选择重量为9的砝码,这样1,3,9三个砝码能称出的最大重量13。因为前二个砝码能构造出1-4。那么三个砝码一定能构造出9-4 至9+4

以此类推第四个砝码选择27。因为27-13=14。此时能构造出的最大重量是40

通过规律我们发现

一个砝码时,最多构造的重量为1

二个砝码时,最多构造的重量为4

三个砝码时,最多构造的重量为13

四个砝码时,最多构造的重量为40

我们发现该步重量=上一步重量*3+1

到这里这道题目就迎刃而解了

代码

   n=int(input())
    fama=1
    fama_cnt=1
    while fama<n:
        fama=fama*3+1
        fama_cnt+=1
    print(fama_cnt)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值