某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足 ![](https://www.nowcoder.com/equation?tex=1%20%5Cle%20n%20%5Cle%20100%20%5C)
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
3 10 81 0
1 5 40
样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换 样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板
# 第22题 空瓶问题 a_input = [] while True: a = input() if a != '0': a_input.append(a) else: break for i in a_input: i_int = int(i) n_sum = 0 zc = i_int // 3 ys = i_int % 3 two_sum = zc + ys n_sum += zc while two_sum >2 : i_int = two_sum zc = i_int // 3 ys = i_int % 3 two_sum = zc + ys n_sum += zc if two_sum == 2: n_sum += 1 print(n_sum)
""" 1. 循环接受输入,如果是0,则退出 2. 需要记录喝了多少和剩余瓶子 """ isl = [] for i in range(10): n = int(input()) if n == 0: break isl.append(n) def count_m(num:int): e = 0 m = 0 if num <= 3: if num == 0: return 0 if num == 2&nbs***bsp;num == 3: return 1 else: m += num//3 e = num//3 + num%3 m += count_m(e) return m for num in isl: r = count_m(num) print(r)
import sys for line in sys.stdin: line = int(line.strip()) if line == 0: break # line: 剩下的瓶子 sum = 0 # 总共兑换的数量 num = 0 # 本次兑换数量 while line >= 3: num = line // 3 sum += num line = num + line % 3 if (line + num) >= 3: # 剩下2个空瓶,上一次兑换数量大于1 sum +=1 # if line ==1 and num >= 2: # sum += 1 print(sum)
def get_water(bottle: int, water: int = 0): if bottle <= 1: return water elif bottle == 2: water += 1 bottle -= 2 return water elif bottle >= 3: water += 1 bottle -= 2 return get_water(bottle, water) while True: bottle = eval(input()) if bottle == 0: break print(get_water(bottle))
def canDrinkbottles(emptybottles:int): global canbs global lastebs if emptybottles<=1: return print(canbs) elif emptybottles ==2: return print(canbs+1) else: canbs = canbs + emptybottles//3 lastebs = emptybottles//3 + emptybottles%3 # print(f'换取的瓶数和剩余空瓶数:{emptybottles//3},{emptybottles%3},总空瓶数:{lastebs},已换取总瓶数:{canbs}') canDrinkbottles(lastebs) while True: inp = int(input()) if inp ==0: break canbs = 0 lastebs = 0 canDrinkbottles(inp)
#最简单的思路了,两个空瓶借一个空瓶就能换一瓶汽水,只有一瓶不能借 while n:=int(input()): print(n//2)
# 方法一:常规方法 for i in range(10): a, s = int(input()), 0 while True: if a < 2: # 小于2瓶,则不够兑换 break elif a == 2: # 等于两瓶,可以就借一瓶,然后归还 s += 1 break else: # 其他则正常处理 n, m = a // 3, a % 3 s += n a = n + m print(s) # 方法二:每两瓶借一瓶,然后归还,即喝一瓶,又没有剩余瓶子,而不足两瓶的也无法兑换 for i in range(10): a = int(input()) if a == 0: break else: print(a // 2)
def drink(b): count = int(b / 3) #喝到的数量 b = b % 3 + count #空瓶的数量=喝到+余下的 if b >= 3: #递归 count += drink(b) if b == 2: #余两个空瓶可以借一瓶汽水还三个空瓶情况 count += 1 return count while 1: bottle = int(input()) count = 0 empBott = 0 if bottle == 0: break else: print(drink(bottle))
for line in sys.stdin: a = line if int(a) != 0 : b = 0 while int(a) > 1: m ,n = (int(a)//3), (int(a) % 3) b = b + m a = m + n if m + n == 2: b += 1 break print(b)
flag = 1 N = 10 while flag == 1 and N > 0: n = int(input()) if 1<=n<=100: print(n//2) elif n == 0: flag = 0 else: print('请输入1-100之间的整数') N = N -1