题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
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); } } }