【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

简介: 【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

题目内容

喝汽水问题

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

题目分析

数学思路分析

根据给出的问题和引用内容,我们可以得出答案。

首先,我们用20元购买了20瓶汽水,现在有20个空瓶。

接下来,我们将这20个空瓶兑换成新的10瓶汽水

然后,将这10个空瓶再次兑换成新的5瓶汽水,此时还剩下一个空瓶。

我们将这个剩余的空瓶与后面的空瓶结合兑换,得到1瓶新的汽水

因此,到目前为止,我们总共获得了20+10+5+2+1+1=39瓶汽水。

所以,给了20元我们可以喝到39瓶汽水。

编程思路分析

思路一 循环实现

total = 20;  //汽水总数

   int k = 0;     //空瓶数

   int s = 0 ;     //剩余空瓶

第一次(k=20)。

第二次(k=20/2=10,s=20%2=0),此时total又增加10了;

第三次(k=10/2=5,s=10%2=0);

第四次(k=5/2=2, s=5%2=1,);

第五次(k=2/2=1,s=2%2=0);

(s=1)。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int total = 20;  //汽水总数
    int k = 0;     //空瓶数
    int s = 0 ;     //剩余空瓶
       k = 20;
    while(k>=1)
    {
        k= k+s;
        total = total+k/2;//原有的汽水数+换来的汽水数
        s = k%2;
        k=k/2;//两个空瓶子换1个新汽水,汽水喝完就是1个瓶子
    }
    printf("%d\n",total);
    system("pause");
    return 0;
}

思路二 递归实现

第一次和第二次买汽水 ,分别花了一块钱(+2),

从第三次开始,每次去花一块钱买汽水,再加上用第一次和第二次的空瓶子可以换来一瓶,一共可以获得两瓶汽水(+2),

第四次拿着第三次那两空瓶子,再花一块钱,又可以得到两瓶汽水(+2),

第五次,第六次,以此类推,接下来的每一次都是相当于花1元钱和两个空瓶子,来获得两瓶新的汽水

那么到最后一次时,手里已经没有钱了,即此时只有两个空瓶子换来一瓶汽水(+1)。

去买汽水的过程定义为一个函数就可以递归计算最终结果。

#include<stdio.h>
#include<stdlib.h>
int  Buy(int money)
{
    if(money==1)
        return 1;
    else 
        return Buy(money-1)+2;
}
int main()
{
    int money = 20;
    printf("%d\n",Buy(money));
    system("pause");
    return 0;
}

 

相关文章
|
缓存 Java Maven
Maven配置多仓库无效?来看看这篇文章
Maven配置多仓库无效?来看看这篇文章
1808 0
Maven配置多仓库无效?来看看这篇文章
|
8月前
|
存储 弹性计算 安全
阿里云服务器付费类型、地域、镜像、存储、带宽和安全组设置与选择注意事项参考
在我们通过自定义购买的方式购买阿里云服务器器ECS时,会有多个选项,有的新手用户可能并不是很清楚这些选项是什么,选择或设置时需要注意什么,本文将从付费类型、地域与可用区、镜像、存储、带宽和安全组等多个方面,为您详细解析云服务器购买过程中各个参数与配置的选择注意事项,以供参考。
464 66
|
9月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
643 0
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
|
11月前
|
算法 数据挖掘 索引
Pandas数据排序:单列与多列排序详解
本文介绍了Pandas库中单列和多列排序的方法及常见问题的解决方案。单列排序使用`sort_values()`方法,支持升序和降序排列,并解决了忽略大小写、处理缺失值和索引混乱等问题。多列排序同样使用`sort_values()`,可指定不同列的不同排序方向,解决列名错误和性能优化等问题。掌握这些技巧能提高数据分析效率。
485 9
|
监控 前端开发 网络协议
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
【2月更文挑战第7天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了。监控面板主要是一些辅助标签工具栏。有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言。监控面板是fiddler最核心的功能之一。记录了来自于服务器端(webServer)的请求会话。包括页面的请求和静态文件的请求。状态面板主要显示的是会话及会话的状态。位于软件界面右边的这一大块面板,即为辅助标签 + 工具,宏哥称之为监控。
437 0
miniconda3彻底删除虚拟环境
这篇文章介绍了如何彻底删除Miniconda3创建的虚拟环境,包括删除环境的命令和步骤。
1496 0
miniconda3彻底删除虚拟环境
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的高校电动车租赁系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的高校电动车租赁系统附带文章源码部署视频讲解等
228 0
|
前端开发 JavaScript Java
Layui实现动态选项卡(超详细)
Layui实现动态选项卡(超详细)
384 0

热门文章

最新文章