题目描述
解题思路
首先要搭配砝码,砝码重量为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)