陈冠希


私信TA

用户名:H2130819033

访问量:2877

签 名:

今日最爱,晚风与你

等  级
排  名 260
经  验 5893
参赛次数 13
文章发表 31
年  龄 20
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

解题思路:

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

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

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

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

哪岂不是把输入的数除以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 人评分

  评论区

  • «
  • »