# U3.1、 翻譯題目,轉換成白話 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/19` 題目是會經過包裝的,需要累積閱讀能力。 讀懂題目來解題 --- ## 幾個水桶 可以先列 2 的倍數出來: 20=16+4 20=8+8+4 今天給個數字 n 要用 2 的次方倍率,把數字拼出來,因此需要幾個數字? **最小的五個水桶容量為 2 的 n 次方:** 1 $(2^0)$ 2 $(2^1)$ 4 $(2^2)$ 8 $(2^3)$ 16 $(2^4)$ 再來為 32, 64, 128 ... 直到 2147483648 。 每次取水,帶最少的水桶,如 20 單位的水,帶 16 單位和 4 單位的水桶即可。 所以是兩個水桶。 --- # U3.2、 輸入範圍 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/19` 不同規模有不同的範圍要解決。 不同範圍 = 不同限制。 仔細看輸入範圍。 把範圍講清楚的題目就好寫,沒有就問到底這樣。 --- ## 空間限制 ### RAM 的量? int : 4bytes JavaScript Number : 8bytes (8x兩百萬)/1024 兩百萬個數字為可占用並載入 15.625 MB RAM ### 陣列大小? 如果破幾十億就不太可能全部塞到陣列內。 排兩百萬數字跟排十幾個字用的方法有差。 範圍決定了方法。 [聯誼比大小](https://oj.lidemy.com/problem/1004) ## 時間限制 時間可以多久?(牽涉到時間複雜度) 用的解法比較慢但解得出來,改善效率。 初學先求有再求好。 big O ,演算法重要。 ## 型態限制 常見型態的記憶體大小以及範圍要注意 。 **int : 大小在 -$(2^{31})$ 到 $(2^{31})$-1 之間。** **Number : NumberMAX_SAFE_INTEGER 。** 數字無法想存多少就存多少。 超出 NumberMAX_SAFE_INTEGER 就無法精確的存取,因此 NumberMAX_SAFE_INTEGER+1 和 NumberMAX_SAFE_INTEGER+2 就一樣的,大概是 16 位(範圍的限制)。 **folat 精準度問題。** 0.1+0.2 != 0.3 因此可以取整數來解決,或四捨五入。 --- # U3.3、 輸入輸出方式 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/19` --- ## 以函式為主 面試考試 LIOJ 都是這種。 --- ## 標準輸出入方式為主 如 LIOJ 的制式輸出入,JavaScript 使用 `readline.createInterface` , 就可從 `stdin` 讀取輸入。 輸出接用 `console.log` 。 JS 可參考底下範例程式碼: ```` var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin }); var lines = [] // 讀取到一行,先把這一行加進去 lines 陣列,最後再一起處理 rl.on('line', function (line) { lines.push(line) }); // 輸入結束,開始針對 lines 做處理 rl.on('close', function() { solve(lines) }) // 上面都不用管,只需要完成這個 function 就好,可以透過 lines[i] 拿取內容 function solve(lines) { } ```` ### `cat` `node` 指令 mac OS : cat xxx.txt | node xxx.js win OS : cat input.txt | env node code.js or cat input.txt | command node code.js --- # U3.4、 Project 3 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/19` 三個題目,用白話文解釋,並提出在解題中有可能碰到的問題或是需注意地方。 --- ## [LIOJ 1010:靈魂伴侶](https://oj.lidemy.com/problem/1010) 數字範圍沒有要注意的地方。 要怎麼衡量愛的價值 ? 身高、體重、血型、學校、興趣、喜好分數都要一致嗎 ? 怎麼衡量以上的分數 ? 輸入兩數值,如兩數值相同,輸出 Yes ; 否,則輸出 No 。 --- ## [LIOJ 1015:音速小子](https://oj.lidemy.com/problem/1015) 數字應該沒有要注意的範圍問題。 他能跑無限遠嗎 ? 有時間範圍或是距離限制嗎 ? 我直接把一個數字*340 應該就是假定範圍。 --- ## [LIOJ 1017:貪婪的小偷](https://oj.lidemy.com/problem/1017) 沒有範圍問題。 如果最大的數值有幾個一樣,有 2 個 5 那要判斷怎麼第幾個 5。 取得 3 個最大數值的總和。 --- **上課學習筆記。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up