面试题:一次有意思的买饮料

NsNe

题目

你有 20 块钱,一瓶饮料卖 5 块钱,2个瓶身可以换一瓶饮料,4个瓶盖可以换一瓶饮料。问最多可以喝多少瓶饮料

思路

除了第一次用钱买,剩余的均是通过瓶身或瓶盖兑换而来,那么兑换到直到瓶身和瓶盖无法兑换为止

编码

function buyDrinks(total, price) {
  //第一次用钱购买
  const firstNum = Math.floor(total / price);
  let res = firstNum;
  // 剩余瓶盖
  let remainCap = firstNum;
  // 剩余瓶身
  let remainBody = firstNum;
  // 兑换
  while(remainCap >= 4 || remainBody >= 2) {
    // 瓶盖可兑换数量
    const numCap = Math.floor(remainCap / 4);
    // 瓶身可兑换数量
    const numBody = Math.floor(remainBody / 2);
    // 总共兑换的数量
    const changeTotal = numCap + numBody;
    res += changeTotal;
    remainCap = remainCap % 4 + changeTotal;
    remainBody = remainBody % 2 + changeTotal;
  }
  
  return res;
} 

console.log(buyDrinks(20, 5))
阅读 238

涛哥前端知识库
前端知识库,博客,问题等记录

善良,学习,拼搏。不忘初心,方得始终。

1.7k 声望
38 粉丝
0 条评论
你知道吗?

善良,学习,拼搏。不忘初心,方得始终。

1.7k 声望
38 粉丝
宣传栏