题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
int numi = scanner.nextInt();
if (numi == 0) {
break;
}
list.add(numi);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(getDrinkNum(list.get(i)));
}
scanner.close();
}
static int getDrinkNum(int num) {
int subMod = 0;
int drinkNum = 0;
//能被3整除的部分,商加入喝的数量中
//模3的累计起来
while ((num / 3) != 0) {
drinkNum += (num / 3);
subMod += num % 3;
num /= 3;
}
//最后如果num小于3了,那么就要也加入余数的集合中
subMod += num;
//余数小于等于1,找老板借空瓶子还不起
if (subMod <= 1) {
return drinkNum;
} else if (subMod <= 3) {
//余数等于2或者3,找老板借空瓶子可以再喝一瓶
return drinkNum + 1;
} else {
//余数还有很多,递归方法再去把余数的和放入方法参数
drinkNum += getDrinkNum(subMod);
return drinkNum;
}
}
}
查看16道真题和解析