import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, count;
while ((n = in.nextInt()) != 0) {
count = 0;
while (n > 2) {
// 未参与兑换的瓶子 e.g. 四个空瓶 三个空瓶兑换一瓶汽水 还剩一个未参与
int r = n % 3;
// 三个空瓶兑换一瓶汽水 那么兑换了n瓶汽水
int q = n / 3;
// 累加兑换
count += q;
// 兑换的瓶子(喝完的空瓶子) + 未参与兑换的瓶子 = 下一轮兑换的瓶子
n = r + q;
}
// 如果最后剩两个瓶子 还能再兑换一个(借一法)
System.out.println(n == 2 ? count + 1 : count);
}
}
}
上面是朴素解法 在题解里看到了 贪心思想的解法 很妙
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n;
while ((n = in.nextInt()) != 0) {
System.out.println(n / 2);
}
}
}

京公网安备 11010502036488号