牛客周赛

A. 牛牛爱喝酒

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 返回牛牛能喝的最多的酒
# @param m int整型 酒单价
# @param n int整型 牛牛的现金
# @return int整型
#
class Solution:
    def countWine(self , m , n ):
        # write code here
        def countnum(bottle,top,sumn):
            tb = bottle>>1
            while tb:
                sumn += tb
                top += tb
                bottle -= tb
                tb = bottle>>1
            tt = top>>2
            while tt:
                sumn += tt
                bottle += tt
                top -= tt*3
                tt = top>>2
            return bottle, top, sumn

        sumn = 0
        bottle = 0
        top = 0
        tm = n//m
        if tm:
            sumn += tm
            bottle += tm
            top += tm
        while bottle>>1 or top>>2:
            bottle, top, sumn = countnum(bottle, top, sumn)
        return sumn
  • 根据规则来

你可能感兴趣的:(leetcode刷题,算法)