蓝桥杯 | 饮料换购 问题 | python
题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。输入描述
输入一个整数 n(0<n<1000),表示开始购买的饮料数量。输出描述
输出一个整数,表示实际得到的饮料数。输入输出样例
输入
100
输出
149
运行限制
最大运行时间:1s
最大运行内存: 256M
- 官方题解
import os
import sys
# 请在此输入您的代码
n=eval(input()) # 开始购买的饮料数量
ans=0
while n>=3:
n-=2 # 每喝3瓶多1瓶,每3瓶剩余n-2瓶
ans+=3 # 喝掉3瓶
ans+=n # 最后可能出现剩余1瓶或2瓶的情况
print(ans)
- 自己解决
import os
import sys
# 请在此输入您的代码
n=eval(input())
ans=n # 初始饮料瓶总数
while n>=3:
ans+=n//3 # 加上下一轮生成的饮料瓶数
n=n//3+n%3 # 下一轮参与选手(上下两句顺序不可换)
print(ans)
- 递归
import os
import sys
# 请在此输入您的代码
n=eval(input())
def huan(n):
if n<3:
return 0
else:
a=n//3 # a是每轮新生成的饮料瓶数
b=n%3
s=a+b # s是下一轮参与选手
a=a+huan(s)
return a # 一共新生成的饮料瓶数
print(huan(n)+n) # 新生成总数+初始总数