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; }