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
}