某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
3 10 81 0
1 5 40
样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换 样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板
import sys max_iter = 10 max_n = 100 iters = 0 for line in sys.stdin: iters += 1 # 超出最大输入行数时退出 if iters > max_iter: break n = int(line) # 零或非法输入时退出 if n <= 0&nbs***bsp;n > max_n: break ans = n//3 last_n = n%3 + n//3 while last_n >= 3: bot = last_n//3 ans += bot last_n = last_n%3 + bot if last_n == 2: # 只需在最后一次考虑是否向老板借瓶子,且只有自己有两个时,才能借得一个 ans += 1 print(ans)
print(floor(int(num) * 3 / 2) - int(num))
def exchange(num): if num==2: #递归边界 两个空瓶能换一瓶 return 1 elif num==1: #递归边界 一个空瓶就算了 return 0 else: return num//3+exchange(num//3+num%3) #,超过3时,喝的数量始终是num//3 while True: try: num = eval(input()) if not num: break else: print(exchange(num)) except EOFError: break
num=10 i=num//3 while num>2: num=num//3+num%3 i += num // 3 print("剩余瓶子数量:",num) if num==2: i=i+1 print("更换了{}瓶汽水".format(i))
while True:
try:
# BottleNum=int(input('输入手上的瓶子数量:'))
BottleNum=int(input())
# print('手上的瓶子数量:',BottleNum)
if BottleNum>0 and (BottleNum*10)%10==0:
RestBottleNum = int(BottleNum / 3) + BottleNum % 3
# print('剩余瓶子数量')
# print(RestBottleNum)
DrinkCount=int(BottleNum / 3)
while RestBottleNum>=2:
if RestBottleNum==2 or RestBottleNum==3:
DrinkCount+=1
break
DrinkCount += int(RestBottleNum / 3)
RestBottleNum = int(RestBottleNum / 3)+RestBottleNum % 3
# 如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
# print('能喝的瓶数:',DrinkCount)
print(DrinkCount)
else:
# print("输入有误,瓶子数量必须是正整数")
break
except:
# print('请检查输入,输入必须为正整数')
pass
def hsh(n): num=0 while n !=0: if n%3==0: num+=n//3 n=n//3 if n%3==2: k=(n+1)//3 num+=k n=k-1 if n%3 ==1: if (n+2)//3<2: num+=0 break else: k=(n+2)//3 num+=k n=k-2 print(num) while True: try: a=int(input()) if a !=0: hsh(a) except: break
def empty_bottle_for_drinks(num):
if num == 0:
return None
elif num == 1:
return 0
elif num == 2:
return 1
else:
drinks = num//3
num = num//3 + (num - 3*(num//3))
return drinks + empty_bottle_for_drinks(num)
在pycharm里运行过了都是对的,可是不会封装牛客的输入输出555