买汽水问题,看完不懂你打我!

229 阅读1分钟
/**
 * 你有n元钱,一瓶汽水2元钱,2个空瓶换一瓶汽水,4个瓶盖换一瓶汽水,问最多喝多少瓶汽水?
 * @param {number} n 表示有多少钱
 * @param {number} o 表示一瓶汽水要多少钱
 * @param {number} p 表示几个空瓶可以换一瓶汽水
 * @param {number} q 表示几个瓶盖可以换一瓶汽水
 * 
 */
const getMostQS = (n, o, p, q) => {
  console.log({ n, o, p, q });
  const original = ~~(n / o) // 刚开始可以买到的汽水
  let bottle = original
  let cap = original
  let ans = original
  // p个空瓶换一瓶汽水,q个瓶盖换一瓶汽水
  while (bottle / p >= 1 || cap / q >= 1) {
    if (bottle / p >= 1) {
      bottle = bottle - p
      // 换了一瓶后,多了一个空瓶和瓶盖
      bottle++
      cap++
    } else {
      cap = cap - q
      // 换了一瓶后,多了一个空瓶和瓶盖
      bottle++
      cap++
    }
    ans++
  }
  console.log(ans);
  return ans
}
// 自行校验,都对!
for (let i = 1; i <= 20; i++) {
  getMostQS(i, 2, 2, 4)
}
// 撒花!