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



京公网安备 11010502036488号