思路:
假如有10(n>2)个空瓶, 每3个空瓶可以换一瓶汽水, 则可以换3瓶汽水(还剩下1个空瓶), 即此时可以换n/3瓶汽水,
这换来的3瓶汽水喝完后变成3个空瓶, 再加上刚剩下的1个空瓶, 则现在有4个空瓶, 即此时空瓶数量为n/3+n%3瓶,
4个空瓶又可以换1瓶汽水,则目前已经喝到了4瓶汽水,
喝完换来的1瓶汽水以及刚剩下的1个空瓶(即若n=2), 这时再跟老板借一瓶汽水, 又可以凑够3个空瓶换1瓶汽水还给老板,
最后则可以喝到5瓶汽水
import java.util.*;
public class day1{
public static int drink(int n){ //n:空瓶个数
int total = 0; //total:汽水总数
while(n > 2){
total = total + n/3;
n = n/3 + n%3;
}
if(n == 2){
total = total + 1; //这时可以跟老板借一瓶喝完再换一瓶
}
return total;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int m; //m: 键盘输入的数(表示空瓶数)
while(sc.hasNext()){ //调用hasNext方法判断是否有数据输入
m = sc.nextInt(); //调用nextInt方法实现键盘输入整型
System.out.println(drink(m));//调用drink函数判断有m个空瓶能换多少瓶汽水
}
}
}
输入输出结果:
输入10,输出5:
输入81,输出40,
输入3,输出1
输入2,输出1