【简单】算法nodeJs:汽水瓶

272 阅读1分钟

描述

某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有 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));
    }
})();