描述 某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。 小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。 数据范围:输入的正整数满足 1 \le n \le 100 \1≤n≤100
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
输入描述: 输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。 输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int count = 0;
while (scanner.hasNextInt()){
int arg = scanner.nextInt();
count++;
// 最多包含10组测试数据
if(count > 10)
break;
// 若输入0 则不输出
if(arg == 0)
continue;
System.out.println(method(arg));
}
}
private static int method(int arg){
if(arg == 1)
return 0;
// answer 最终的答案
int ans = 0;
int tempValue = 0;
while(arg > 0){
// 手中还有两个瓶子,就可以借老板一瓶
if(arg == 2){
ans++;
break;
}else if(arg < 2){
// 手中瓶子少于2个,则不可以继续
break;
}
// tempValue 是能换到饮料的数量
tempValue = arg / 3;
// ans是喝到的数量
ans += tempValue;
// arg是空瓶子数量
arg = arg % 3 + tempValue;
}
return ans;
}
}