1.题目描述
汽水瓶
“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶。当他手上最后还剩两个空瓶子的时候,他可以向老板再借一瓶,喝完后,换的一瓶还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
2.思路分析
这道题有一个取巧的做法,分析每次换的结果可以知道,他最后换到的汽水的数量就是他最先拥有的空瓶子空瓶子数量的一半。
抛开取巧的做法,我们来分析一下这个题目。
小张拥有的空瓶子数n可以这样来表示:n = n / 3 + n % 3.意思是,他可以换到 n / 3瓶汽水,喝完后就是他的空瓶子了,然后再加上他没换的空瓶子即n % 3.
小张换的汽水数量sum = n / 3.
由于手里有两个空瓶子时可以跟老板借一瓶。即n == 2 时,sum++。这种情况说明他再也没有机会换了,所以就停止计算。
3.代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
if(n == 0){
break;
}
int ans = getNum(n);
System.out.println(ans);
}
}
public static int getNum(int n){
int sum = 0;
while(n > 1){
sum += n / 3;
n = n / 3 + n % 3;
if(n == 2){
sum++;
break;
}
}
return sum;
}
}