问题:
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
算法:
package test;
public class CalculateBottle {
public static void main(String[] args) {
CalculateBottle(10);
}
public static void CalculateBottle(int num){
int rest = 0, get = 0, sum = 0;
while (num >= 2){
if (num == 2){ // 当2个空瓶时,向老板借1瓶汽水喝掉,再用3个空瓶换1瓶汽水还给老板
num = num + 1;
}
rest = num % 3; // 花3n个空瓶换n瓶汽水后剩余的空瓶
get = num / 3; // 花3n个空瓶换来的汽水瓶数量
num = rest + get; // 最新的空瓶数 = 剩余的空瓶 + 换来喝掉的空瓶
sum = sum + get; // 总共喝掉的汽水 = 累加换来的汽水瓶数量
}
System.out.println("喝掉汽水总数:" + sum);
}
}