首页 > 试题广场 >

汽水瓶

[编程题]汽水瓶
  • 热度指数:520422 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足

注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。

输入描述:

输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。



输出描述:

对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

示例1

输入

3
10
81
0

输出

1
5
40

说明

样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换
样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板    
头像 虹色萤火虫
发表于 2020-08-25 12:11:11
知道这题优秀的解法,我真是裂开了。 题目描述中有讲到:剩2个空瓶子时,可以先找老板借一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。 也就是说2个空瓶子即可换一瓶汽水喝,而且喝完之后手里也没有空瓶子。求解时直接把空瓶数除以2,即可得到正解。
头像 陶陶2021
发表于 2021-09-22 22:45:51
想要换最多的汽水,就要厚脸皮,每两个空瓶向老板借一瓶汽水,喝完之后拿三个空瓶再换一瓶还给老板;相当于自己每两个空瓶可以换到一瓶汽水核心代码bottle/2 import java.util.Scanner; public class Main{ public static void main 展开全文
头像 牛客797476880号
发表于 2021-09-19 10:24:42
''' 这个题说了一大堆,最后你可以不要脸的问老板借一还一,双手叉腰走人,不留下一点垃圾。也就是说,只要去算你有的内不能整除就完事了 ''' while True: n=int(input()) if n==0:break print(n//2)
头像 ~Marienbader
发表于 2020-02-21 19:25:56
实在是此类题目,多找找规律,傻乎乎递归写了好久 #include<iostream> using namespace std; int main() { int n; while (cin >> n && n != 0) { 展开全文
头像 张恒201901071908504
发表于 2022-02-08 17:17:51
因为可以借瓶子。 所以本质上就是满足两个瓶子就能和一瓶。 故总数除以2,取整就是要喝的。 #include<iostream> using namespace std; int main() { int n; while ( cin >> n ) 展开全文
头像 江帆-
发表于 2021-10-31 12:06:47
离谱思路 有点离谱的思路,恰好是2个瓶子最终能换一瓶,所以直接整除2即可,但标准解决方案应该是使用递归的思路 import sys data = sys.stdin for x in data: x = int(x.strip()) if x != 0: print( 展开全文
头像 LongyuXie
发表于 2020-01-07 13:12:44
题目描述 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝 展开全文
头像 骑着骆驼🐫去看海
发表于 2022-02-04 00:20:01
递归思想解题,可以兑换的瓶数为空瓶整除以3,剩余的空瓶数量为空瓶整除以3加上空瓶整除以3的余数。 def max_bottles(n): result = n // 3 bottles = n // 3 + n % 3 if bottles == 2: # 空瓶数量为2,可 展开全文
头像 昵称到底占用没占用
发表于 2022-01-27 16:13:13
使用递归做法,不需要找规律,找规律是投机取巧罢了 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in 展开全文
头像 ArthurMorgan
发表于 2021-01-04 22:30:40
模拟+递归思路 这题其实我看到了楼上一个大佬的最简单解法,通过逻辑推理,只要把初始空瓶除以二即可,真可以说是太秀了。但愚笨的我还是按照标准的模拟思路来接题吧。其实这题最难的并非逻辑,而是把这个逻辑转化成编程语言,题目的逻辑就在题目里,这时候我们更像是做一份翻译工作。 逻辑分析 我们不妨就按题目假设的 展开全文