JavaScript题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
const rl = require('readline').createInterface({ input: process.stdin, output: process.output }); const inputs = []; rl.on('line', (line) => { inputs.push(parseInt(line)); }).on('close', () => { resolve(inputs); }) function resolve(inputs) { for(let i = 0; i < inputs.length; i++) { let num = inputs[i]; if(num < 2) { continue; } let total = 0; while(num >= 2) { const canDrink = ~~(num / 3); const remain = num % 3; if(canDrink === 0) { if(remain === 2) { total += 1; } break; } total += canDrink; num = canDrink + remain; } console.log(total); } }
思路:
模拟过程的题,先找一个示例模拟一下过程,弄清楚是怎么执行的。
这道题,3个空瓶换1瓶汽水,并且可以向老板借一瓶空瓶,那就是说最少2瓶就可以换一瓶。
那就先把手里所有的空瓶拿去换汽水 canDrink,canDrink 再加上剩余的 remain 再去换汽水,直到最后不能再换汽水为止输出换了多少瓶汽水。
如果空瓶少于2瓶,按题目要求是不输出直接跳过。