题解 | #汽水瓶#

汽水瓶

http://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

利用递推的方法进行解决。

nn 为空汽水瓶个数。

第一次换完的空汽水瓶 a1=n//3+n%3a_1=n//3 + n\%3

第二次还完的空气水瓶 a2=a1//3+a1%3a_2=a_1 // 3 + a_1 \%3

...

第 k 次换完后的空汽水瓶 ak=ak1//3+ak1%3a_k = a_{k-1} // 3 + a_{k-1}\%3

如果 ak=2a_k=2,则还可以再喝一瓶,于是最多喝 a1//3+ak//3+1a_1 // 3 + \cdots a_k // 3 + 1 瓶。

如果 ak=1a_k = 1, 则不能再喝一瓶,于是最多喝 a1//3+ak//3a_1 // 3 + \cdots a_k // 3 瓶。

于是求解代码为

def get_max_num(n):
    a = [n]
    while True:
        a.append(a[-1] // 3 + a[-1] % 3)
        if a[-1] <=2:
            break
    #print(a)
    s = 0
    for x in a[:-1]:
        s += x // 3
    s += (a[-1] + 1) // 3
    print(s)

while True:
    a = int(input())
    if a == 0:
        break
    get_max_num(a)
全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务