思路:用笔在纸上写一下兑换瓶子和剩余瓶子的计算过程,发现兑换=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; } }