题目描述
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足 1≤𝑛≤100
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
题解
#include <iostream>
int main() {
int n;
while (std::cin >> n && n != 0) {
int totalDrinks = 0; // 总共可以喝到的汽水瓶数
while (n >= 3) {
int drinksThisRound = n / 3; // 计算这一轮可以换得的汽水瓶数
totalDrinks += drinksThisRound; // 更新总共可以喝到的汽水瓶数
n = n % 3 + drinksThisRound; // 更新剩余的空瓶数,包括新得到的空瓶
}
// 处理剩余1或2个空瓶的情况
if (n == 2) {
totalDrinks++; // 可以再换一瓶
n = 2; // 喝完后剩下2个空瓶
} else if (n == 1) {
// 如果只有一个空瓶,不能换汽水,结束
}
std::cout << totalDrinks << std::endl; // 输出结果
}
return 0;
}