运动员喝饮料问题

题目:

27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?要求: 尝试优化算法,代码行数越少越好

def f(a):

for i in range(a+1):

all_=0 #能得到的总数

new=0 #空瓶子的数量

b=i #传值参数

n=i #传值参数

while int(n/3)!=0:

new=int(n%3+n/3)

all_=int(all_+i+new-n%3)

n=new

i=0

if new==2: #如果剩下的空瓶子数为2则可以借一瓶然后3换1

all_+=1

if all_>=a or (a<4 and a==b):

return b

# buy=0

# all=0

# while all<27:

# buy+=1

# all+=1

# if all%3==0:

# all+=1

# if all%3==1:

# buy-=1

# return buy

while True:

a=int(input('>>>'))

print(f(a))