描述
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有 n 个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
输入描述:
本题将会给出 1≦T≦10 组测试数据,确切数字未知,您需要一直读入直到特定的结尾。每组测试数据描述如下:
在一行上输入一个整数 n(0≦n≦100) ,代表小张手上的空汽水瓶数量。特别地,n=0 代表输入结束,您只需要立即退出,不需要针对这种情况进行处理。
输出描述:
对于每一组测试数据,新起一行。输出一个整数,代表小张最多可以喝到的汽水数量。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
const fn = (num) => {
if (num < 2) return 0; // 当空瓶少于2个时,无法换汽水
if (num == 2) return 1; // 当有2个空瓶时,可以借1个空瓶,换1瓶汽水
let bottle = Math.floor(num / 3);
return bottle + fn(bottle + (num % 3));
};
while ((line = Number(await readline()))) {
console.log(fn(line));
}
})();