解题思路:
注意题目最后的提示,拥有两个瓶子时可以找老板借汽水,然后将三个瓶子换的汽水还给老板
把这个过程简单化,就是可以用两个瓶子作为代价去喝一瓶汽水
好的,那我们就不拿三个瓶子去换了,只要一直去借汽水就可以了(老板表示很凎!)
利用借汽水这个机制,每有两个瓶子就可以喝到一瓶汽水
哪岂不是把输入的数除以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 人评分
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:682 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:635 |
简单的a+b (C语言代码)浏览:726 |
程序员的表白 (C语言代码)浏览:658 |
C语言训练-求函数值 (C语言代码)浏览:574 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:531 |
数字游戏 (C++代码)浏览:1180 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:683 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:515 |
C二级辅导-温度转换 (C语言代码)浏览:723 |