换酒问题-----leetcode5464

 

 

 

int numWaterBottles(int numBottles, int numExchange){
    int sum=0,a=0,a1=0;        
    //sum记录换的总的酒的个数
    //a表示每次换酒后的剩余的瓶数
//a1表示剩余的a的和换酒后剩余的瓶数
    if(numBottles<numExchange)         //当numBottles少于numExchange时,能得到的酒就是numBottles的个数。
    {
        sum=numBottles;
    }
    if(numBottles==numExchange)        //当相等时,就在原来酒的基础上加一
    {
        sum=numBottles+1;
    }
    if(numBottles>numExchange)         //当大于时
    {
         while(numBottles!=0)
        {
            sum+=numBottles;
            a+=numBottles%numExchange;              //用空瓶数量numBottles对numExchange进行取余,得到交换后剩余的空瓶数。
            numBottles=numBottles/numExchange;      //用现有空瓶换得的酒的个数。
        }
      //计算每次取余数之后剩余空瓶数换得的酒的个数
if(a<numExchange) { sum=sum; } else { a1=a%numExchange; //对上一步得到的剩余空瓶数就行取余数处理得到最后的酒的数量。 a=a/numExchange; if((a+a1)<numExchange) { sum=sum+a; } else { sum=sum+a+1; } } } return sum; }

 

原文地址:https://www.cnblogs.com/sbb-first-blog/p/13342077.html