汽水瓶问题
来源:互联网 发布:神雕侠侣安徽卫视源码 编辑:程序博客网 时间:2024/05/16 10:36
汽水瓶问题–华为OJ题目
题目
描写叙述:
有这样一道智力题:“某商店规定:三个空汽水瓶能够换一瓶汽水。
小张手上有十个空汽水瓶,她最多能够换多少瓶汽水喝?”答案是5瓶,方法例如以下:先用9个空瓶子换3瓶汽水。喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。
然后你让老板先借给你一瓶汽水,喝掉这瓶满的。喝完以后用3个空瓶子换一瓶满的还给老板。
假设小张手上有n个空汽水瓶。最多能够换多少瓶汽水喝?
题目类别: 循环
难度: 中级
执行时间限制: 10Sec
内存限制: 128MByte
阶段: 入职前练习
输入:
输入文件最多包括10组測试数据。每一个数据占一行,仅包括一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出:
对于每组測试数据,输出一行。表示最多能够喝的汽水瓶数。假设一瓶也喝不到,输出0。
例子输入:
3
10
81
0
例子输出:
1
5
40
代码
#include<iostream>using namespace std;int CountBottles(int EmptyBottles,int& DrinkedBottles){//EmptyBottles:空瓶子数量;DrinkedBottles:能够兑换的汽水数量 DrinkedBottles = 0; if (EmptyBottles / 3 > 0){ CountBottles(EmptyBottles / 3 + EmptyBottles % 3, DrinkedBottles);//当手头有EmptyBottles个空瓶子,先兑换汽水,看喝完后还有多少个瓶子(喝完的瓶子加上之前剩下的空瓶子)可以继续兑换,再来一次(递归) DrinkedBottles += EmptyBottles / 3;//记录喝了多少瓶汽水 } if (EmptyBottles / 3 == 0){ if (EmptyBottles % 3 == 2){//当剩下2个空瓶子,结果可兑换一瓶汽水 DrinkedBottles = 1; } if (EmptyBottles % 3 < 2)//当剩下0个或者1个空瓶子,对不起,兑换不了汽水咯 DrinkedBottles=0; } return DrinkedBottles;}int main(){ int EmptyBottles, DrinkedBottles = 0; while (cin >> EmptyBottles && EmptyBottles != 0) { cout << CountBottles(EmptyBottles, DrinkedBottles) << endl; }
0 0
- 空汽水瓶换汽水问题
- 汽水瓶问题
- C# 空汽水瓶问题
- 汽水瓶问题 C语言
- 汽水瓶问题(能喝多少瓶汽水)
- 汽水瓶换汽水
- 空汽水瓶问题之数学归纳法
- 华为机试汽水瓶问题
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 汽水瓶
- 网站、网页的自身优化--(如何让网站被搜索引擎搜索到)
- hdu_5616_Jam's balance(暴力枚举子集||母函数)
- jquery ajax向spring mvc controller中传值并接受及解析返回值
- 处理显式游标
- java基础/IO流/
- 汽水瓶问题
- PHP如何生成验证码
- java基础概念
- jacascript核心语法————循环结构
- 带权二分图的最佳匹配(KM算法)
- 【java】helloword.java:1: 错误: 类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明
- java学习:log4j输出xml格式的日志文件(log4j2篇)
- 复制和克隆
- apache2.4的虚拟站点配置与个人情感的纠结