• 编程实现喝汽水问题


    喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。

    我是这么理解的 :首先你有20元钱,

    保底能喝20瓶汽水,这时候你手里就有20个空瓶子。

    20个空瓶子又能换10瓶汽水,此时你手里就有10个空瓶子。 

    10个空瓶子又能换5瓶汽水,此时你手里就有5个空瓶子。

    5个空瓶子又能换2瓶汽水,此时你手里就有2+1=3个空瓶子。

    3个空瓶子又能换1瓶汽水,此时你手里就有1+1=2个空瓶子。

    2个空瓶子又能换1瓶汽水,此时你手里就有1个空瓶子。

     也就是说只要你手里的空瓶子数大于1,就能接着喝。下面我们代码实现以下:

    #include <stdio.h>
    #include <windows.h>
    #include <assert.h>
    int drink_water(int money)
    {
        assert(money);
        int bottle = money;
        int empty = money;
        while(empty > 1) //你手里的空瓶子数大于1,表明你还可以继续喝
        {
            bottle += empty / 2;  //两个空瓶子可以换一瓶汽水
            empty = empty / 2 + empty % 2;  //空瓶子现在是换了之后的瓶子和剩下的空瓶子之和
        }
        return bottle;
    }
    int main()
    {
        int money = 0;
        printf("请输入总金额>") ;
        scanf("%d",&money);
        printf("最多能喝 %d 瓶! ",drink_water(money));
        system("pause");
        return 0;
    }
     
     
          可以发现,不管你有多钱,喝完之后手里还有一个空瓶子,教你个小方法可以让你再喝一瓶:
    你可以向商店老板借一个空瓶子并说等会还你,这时候你手里就有两个空瓶子了,可以去换一瓶汽水,
    喝完就有一个空瓶子了,然后再还给老板,这时候你总共就喝了2*money瓶汽水了。(前提是老板愿意借你一个)
     

     

     
     
     
     
     
     
     
  • 相关阅读:
    linux常用命令
    BAT:如何用批处理清空某个文件的内容
    Java_Blog01:编程入门
    Azkaban的job从创建到执行
    Sqoop1的导入导出
    Java 知识点干货
    启动Eclipse时报错如何解决?
    如何搭建JDK环境和配置JDK环境变量
    Create OpenStack and Docker base image based on CentOS7-mini ISO
    docker-ce install on CentOS7-mini
  • 原文地址:https://www.cnblogs.com/xjq6898/p/7819459.html
Copyright © 2020-2023  润新知