题目链接
/**
* 思路:模拟
* 通过反复兑换的方式进行计算。
*
* 具体做法:
* 使用一个循环,当空瓶数量大于三时进入循环
* 在循环内部,计算空瓶可以兑换多少汽水,将这些汽水数量累计到汽水总数上
* 更新剩余空瓶的数量,包括未能兑换的部分和喝完饮料后剩下的空瓶
* 当循环结束以后,如果剩余的空瓶数量为 2,这个时候就可以向老板借一个空瓶,
* 可以再换一瓶汽水,汽水总数加 1,最后将这瓶汽水的瓶子还给老板
* 返回汽水总数
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
int emptyBottles = scanner.nextInt();
if (emptyBottles == 0) {
break;
}
System.out.println(maxSodaBottles(emptyBottles));
}
}
public static int maxSodaBottles (int n) {
int totalSodas = 0;
while (n >= 3) {
int newSodas = n / 3; // 手里的空瓶能够换取多少瓶饮料
totalSodas += newSodas; // 喝掉用兑换的所有饮料
n = n % 3 + newSodas; // 新的空瓶总数 = 未能兑换的空瓶 + 喝完饮料后剩下的空瓶
}
if (n == 2) { // 还剩两个空瓶的时候找老板借一个空瓶
totalSodas += 1;
}
return totalSodas;
}
}
# 第二题 汽水瓶兑换
# 这道题算是简单题,做除法就可以
def get_cola(n):
res = 0
while n>=3:
res += n//3
n = n//3 + n%3
if n == 2:
res += 1
return res
while 1:
try:
n = int(input())
if n == 0:
break
print(get_cola(n=n))
except:
break