• [华为机试练习题]8.汽水瓶


    题目

    描写叙述:
    有这样一道智力题:“某商店规定:三个空汽水瓶能够换一瓶汽水。

    小张手上有十个空汽水瓶,她最多能够换多少瓶汽水喝?”答案是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

    代码

    /*---------------------------------------
    *   日期:2015-06-29
    *   作者:SJF0115
    *   题目:汽水瓶
    *   来源:华为上机
    -----------------------------------------*/
    #include <iostream>
    using namespace std;
    
    
    void helper(int &n,int &result){
        if(n == 1){
            return;
        }//if
        if(n == 2){
            ++result;
            return;
        }//if
        result += n / 3;
        n = n % 3 + n / 3;
        helper(n,result);
    }
    
    int Drink(int n){
        if(n <= 1){
            return 0;
        }//if
        if(n == 2){
            return 1;
        }//if
        int result = 0;
        helper(n,result);
        return result;
    }
    
    
    int main(){
        int n;
        //freopen("C:\Users\Administrator\Desktop\c++.txt","r",stdin);
        while(cin>>n && n != 0){
            cout<<Drink(n)<<endl;
        }//while
        return 0;
    }
    
  • 相关阅读:
    图片放大功能
    谈论算法
    socket基础
    js实现快速排序
    mysql死锁问题分析(转)
    MVCC 专题
    ActiveMQ持久化方式(转)
    消息队列中点对点与发布订阅区别(good)
    tomcat下部署activemq(转)
    Android文件下载(实现断点续传)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5357939.html
Copyright © 2020-2023  润新知