解题思路:
注意题目最后的提示,拥有两个瓶子时可以找老板借汽水,然后将三个瓶子换的汽水还给老板
把这个过程简单化,就是可以用两个瓶子作为代价去喝一瓶汽水
好的,那我们就不拿三个瓶子去换了,只要一直去借汽水就可以了(老板表示很凎!)
利用借汽水这个机制,每有两个瓶子就可以喝到一瓶汽水
哪岂不是把输入的数除以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语言训练-求素数问题 (C语言代码)浏览:773 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:689 |
A+B for Input-Output Practice (IV) (C++代码)浏览:713 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:672 |
回文数(一) (C语言代码)浏览:809 |
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:751 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:703 |
The 3n + 1 problem (C语言代码)浏览:603 |
幸运数 (C++代码)浏览:1309 |