递归法:设空瓶数量为num, 可以兑换数量为count,临时兑换计数s,计算第一次可兑换count = num//3,此时空瓶为num % 3 + count,此时count = s,第二次兑换,s = (num % 3 + count) // 3, count = count+s,直到剩余空瓶小于3,由于2个空瓶可预支兑换1瓶,需要额外处理,代码如下:
import sys input_list = list(map(int,sys.stdin.readlines())) def jisuan(num, count=0): if num // 3: s = num // 3 count = count + s num = num % 3 + s count, num = jisuan(num, count) elif num==2: count +=1 num = 0 return count, num for num in input_list: a, b = jisuan(num) if a>0: print(a)