D23_繼續第三週解題


Posted by Christy on 2021-05-12

LIOJ 1028:生命靈數

  • 解題想法:所謂生命靈數就是把生日一直相加到最後只剩下一位的結果。在解題過程中,我被 let num = Number(temp[0] + temp[1] + temp[2]) 搞混了,舉個例子就是 1991 11 7,先把它變成 1991117,但此時他還是個字串,運用 Number()把它變成數字,方便做接下來的運算。
    • 所以要分成兩個部分,第一個部分是那一串數字全部相加,會得到一個兩位數的結果
    • 接著讓這兩位數相加到只剩一位
    • 所以我要實作的就是這兩個函式
var readline = require('readline');

var lines = []
var rl = readline.createInterface({
  input: process.stdin
});

rl.on('line', function (line) {
  lines.push(line)
});

rl.on('close', function() {
  solve(lines)
})

function solve(lines) {
    let temp = lines[0].split(' ')
    let n = Number(temp[0] + temp[1] + temp[2])
    let ans = addDigits(n)
    while(ans >= 10) {
        ans = addDigits(ans)
    }
    console.log(ans)
}

function addDigits(n) {
  let sum = 0
  while(n !=0 ) {
    sum += n % 10
    n = Math.floor(n / 10)
  }
  return sum
}









Related Posts

01. Two Sum

01. Two Sum

迴圈

迴圈

[進階 js 05] hoisting(提升)

[進階 js 05] hoisting(提升)


Comments