思路:用笔在纸上写一下兑换瓶子和剩余瓶子的计算过程,发现兑换=n/3,剩余=n%3(兑换完之后剩余的),接着下一轮拥有的空瓶数为(已兑换+剩余), 因为已兑换代表可以喝了之后变成空瓶。再将计算过程转化为代码实现。
#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n&&n!=0) {
        int sum = 0;
        while (n >=3) {
            int ex = n / 3;
            int left = n % 3;
            sum += ex;
            n = ex + left ;
        }
        if(n==2) sum+=1; //n为2单独讨论,为借一瓶可还一瓶的情况
        cout << sum << endl;
    }
}