解题思路:

注意题目最后的提示,拥有两个瓶子时可以找老板借汽水,然后将三个瓶子换的汽水还给老板

把这个过程简单化,就是可以用两个瓶子作为代价去喝一瓶汽水

好的,那我们就不拿三个瓶子去换了,只要一直去借汽水就可以了(老板表示很凎!)

利用借汽水这个机制,每有两个瓶子就可以喝到一瓶汽水

哪岂不是把输入的数除以2再输出就可以了,当然不是,当汽水瓶数小于2时直接退出

瓶子数大于等于3时拿三个瓶子换一瓶汽水,瓶子数等于2时,先借汽水再换汽水,瓶子清零

对于三瓶换一瓶的模式,我这里就模拟一次性换取多瓶,可以减少循环次数

确实如此!

不说了直接上代码!!!!!

注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

int main()

{

int n;

int ans=0;  //记录可以换的汽水瓶数 

int num=0;  //记录换了的汽水数 

while(cin>>n&&n)    //循环输入n并确保n不小于0

{

if(n<2) return 0; //当n小于2时直接结束循环,看一看测试数据就懂了 

num=0;

while(n>=2)

    {

if(n==2)    //当n==2时向老板借一瓶汽水喝掉后就有3个汽水瓶了 

    n++;        //又可以换一瓶汽水了

    ans=n/3;    //记录可以换的汽水瓶数 

    num+=ans;   //记录换了的汽水数 

    n%=3;       //记录换了汽水后还剩下多少个空瓶子 

    n+=ans;     //换了的汽水数加上空瓶子数 

    if(n==2)    //当n==2时向老板借一瓶汽水喝掉后就有3个汽水瓶了

    {            //又可以换一瓶汽水了

   n++;

    }

    }  

cout<<num<<endl;     //最后输出最多可以喝的汽水瓶数

}

return 0;            //要保持写return 0的习惯哦 

}                        //最后不懂的可以在下方留言

                         //您觉得好的话记得给个5星好评哦!!! 


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论