解题思路:
注意题目最后的提示,拥有两个瓶子时可以找老板借汽水,然后将三个瓶子换的汽水还给老板
把这个过程简单化,就是可以用两个瓶子作为代价去喝一瓶汽水
好的,那我们就不拿三个瓶子去换了,只要一直去借汽水就可以了(老板表示很凎!)
利用借汽水这个机制,每有两个瓶子就可以喝到一瓶汽水
哪岂不是把输入的数除以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分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复