Unit5.4:實戰:數字位數加總
題目:
給一個數字 n,求所有數字相加總和。
例如 1234,輸出 10;0 與 1 分別輸出 0 與 1
Find the summation of a number 'n',
if n = 1234, return 10;
if n = 0, return 0,
if n =1, return 1
function add(n) {
let sum = 0
while (n != 0) {
sum += n % 10
n = Math.floor(n /10)
}
return sum
}
console.log(add(1234)) //10
console.log(add(1)) //1
console.log(add(0)) //0
console.log(add(1200)) //3
LIOJ 1026 判斷等比數列
題目:判斷是否為等比數列
Find if an array is geometric progression or not
function Geo(arr) {
if (arr.length <= 1) {
return true
}
let t = arr[1] / arr[0]
for (i = 1; i< arr.length; i++) {
if (arr[i] / arr[i - 1] !== t){
return false
}
}
return true
}
console.log(Geo([2, 4, 8]))
console.log(Geo([2]))
console.log(Geo([2, 4, 9]))
console.log(Geo([]))
- 接下來就要進入 LIOJ 輸入的部分了,如果是第一次用的話,還真的有點難:
The online judge system is not easy to understand at the first beginning...
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) {
}
Lines 是我的輸入資料,是一個陣列的形式,它可能會有一行,
也可能有很多行,它代表傳進去的參數,
LIOJ 的第一題輸入為 1 2,
代表輸入只有一行,所以我們要先拿到第一行資料,
也就是「陣列的第一個元素」,所以用 lines[0],
如果忽略了「陣列的第一個元素」這句話,就會變成有點難理解。
接著再把那一行資料用空白分割,取出資料後寫出題目想要的運作模式,如下:
lines means the parameter,every line is an array element,
even though it looks like this '1 2 1',
it's still ONE array element
so first line = lines[0]
second line = lines[1]
ans use split with space to separate them
*/
function solve(lines) {
let firstline = lines[0]
let ans = firstline.split(' ')
console.log(Number(ans[0]) + Number(ans[1]))
}
- 答案在這裡,所以要輸入 LIOJ 的程式碼長這樣。
- 我的天啊,阿母我出運了,被 AC 了好感動,嗚嗚嗚。
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 line = lines[1]
let arr = line.split(' ')
if (Geo(arr) == true) {
console.log('Yes')
} else console.log('No')
}
function Geo(arr) {
if (arr.length <= 1) {
return true
}
let t = arr[1] / arr[0]
for (i = 1; i< arr.length; i++) {
if (arr[i] / arr[i - 1] !== t){
return false
}
}
return true
}