# HW02 補充說明 :::info 作業發出後,任何更新將會寫於此 2.1 更新 1. 及 2. 2.2 「乘數」為一位數的情況?(「被乘數」為一位數時不屬於這情況) 2.4 更新大量補充說明 2.1 更新 1. 2.2 0 ~ $2^{31}$,更新為0 ~ $2^{31}$-1 2.5 (2023/10/23 更新)新增 alignment 的說明 ::: ## 2.1 $\sqrt{2}$ 1. 請四捨五入輸出到小數點後 15 位,並且僅只輸出 15 位。 歡迎各位使用更精準的小數資料型態,避免相關問題產生。 2. 可以使用 <math.h>,但不能使用 function 及 Array。 ## 2.2 Multiplication v2 - 是否能使用 array 或是 loop? > 可以使用 loop , 盡量使用,但不能使用 array - 是否會有 uint32_t 無法讀入的情況 > 會,所以請用 int64_t 讀入,此題保證 int64_t 可讀入 - 輸入合法的範圍? > 0 ~ $2^{31}$-1,其餘皆為錯誤輸入 - 各位數間是否必須輸出空格? > 是 - 「乘數」為一位數的情況?(被乘數為一位數時不屬於這情況) > 不需再顯示第二層的計算過程,直接顯示答案 > ![](https://hackmd.io/_uploads/S1mfUTqkp.png) - 寬度是否要依照最長數字改變 > 是 > ![](https://hackmd.io/_uploads/HkacvLXy6.png) - 各位運算時出現 0 的情況 ex. 13 * 10 > 你在加法階段仍須輸出一行 0 ![](https://hackmd.io/_uploads/SkcW-UQyp.png) - 出現乘數被乘數為 0 的情況 > 直接顯示 0 ![](https://hackmd.io/_uploads/SkMjF9Ckp.png) - 為避免又有人格式錯,以下這筆資料當作參考測資 ``` 2 9 4 9 7 0 9 8 2 *) 1 2 5 7 4 8 0 9 7 0 ------------------------------------- 0 2 0 6 4 7 9 6 8 7 4 2 6 5 4 7 3 8 8 3 8 0 2 3 5 9 7 6 7 8 5 6 1 1 7 9 8 8 3 9 2 8 2 0 6 4 7 9 6 8 7 4 1 4 7 4 8 5 4 9 1 0 5 8 9 9 4 1 9 6 4 2 9 4 9 7 0 9 8 2 ------------------------------------- 3 7 0 9 2 0 3 9 6 5 6 7 2 1 2 5 4 0 ``` ## 2.3 Non-deterministic Finite State Machine 此題不進行語法限制。 但設有以下成就: - 成就:完成作業 - 成就:僅使用一個 8-bit 大小變數儲存完整狀態機狀態 - 成就:僅使用 64-bit 大小變數運算完成狀態儲存與狀態轉移 完成成就的話,或許會得到成就感。 ## 2.4 Dollar Cost Averaging Calculator - 輸入規則 - $1 \leq Initial\ Investment \leq 10^7$ - $0 \leq Recurring\ Monthly\ Investment \leq 10^7$ - $1 \leq Start\ Month \leq 12$ - $1 \leq Start\ Year \leq 10^4$ - $1 \leq End\ Month \leq 12$ - $1 \leq End\ Year \leq 10^4$ - $1 \leq Rate \leq 100$ - 輸入皆為整數型態 - 時間範圍要至少大於等於一個月 - 其餘例外狀況皆要做非法處理 - 輸出規則 - 輸出分別是:累積本金/累積總金額/累積淨收入/報酬率 - 累積本金、累積總金額、累積淨收入皆為整數,無條件捨去 - (放寬限制)累積本金/累積總金額/累積淨收入/報酬率如果其中有數值大於等於 $10^{15}$,請輸出 \*/\*/\*/\*% - 報酬率 = 累積淨收入/累積總金額(四捨五入至小數點第二位),並且輸出的小數點後結尾不能為 0 - 請輸出至結束的前一個月份 - 以題目範例就是 2023/12/1 ~ 2043/11/31 整20年 - 如在計算過程中有小數的情況,請如實計算,在輸出時符合格式即可 - 程式呈現畫面請按照題目範例呈現的格式 - e.g. 年月份格式 > 題目下面的 ... 是範例後續的輸出示意,不是範例呈現的格式 - 程式輸出範例 ![](https://hackmd.io/_uploads/HJxVl9HZ6.png) > 以上範例提供大家參考 老師提供的網址只是要讓大家明白投資的概念以及作業的需求,但是網站的輸出數值並不一定完全相等於作業要求的輸出數值,每個網站細部的實作方式可能都會影響到些微不同的結果,e.g. double 精度問題、int 型態範圍、小數點捨去規則不相同等,但請大家先按照補充說明內容去實作 - 這裡再提供有月複利的網站給大家:[複利計算機](https://fical.net/zh-hant/%E5%AE%9A%E6%9C%9F%E5%AE%9A%E9%A1%8D%E8%A4%87%E5%88%A9%E8%A8%88%E7%AE%97%E6%A9%9F ) ## 2.5 Catan Simple Islands Engine - 使用陣列特別優惠,得分打 5 折! - 可以使用 function - 那個紫紫的建築物或許對你有幫助哦~ - 加油! - (10/13 更新) 題目有規定地圖要印在左上角,也就是說最左邊/最上面都不能發生整欄(column)都是空的/整列(row)都是空的情況。如果最左邊有空的情況,該筆測資會算全錯。如果最上面有空的情況,會斟酌扣分,但空越多行會扣越多分。 以 L=3, N=1 為例,正確的輸出應該會是: ```= Please input the length: 3 Please input the number of layer: 1 *-* / \ * * \ / *-* ``` 如果是下面的輸出則算全錯: ```= Please input the length: 3 Please input the number of layer: 1 *-* / \ * * \ / *-* ``` 如果是下面的輸出會斟酌扣分: ```= Please input the length: 3 Please input the number of layer: 1 *-* / \ * * \ / *-* ``` ## 2.6 Bonus: What Happens?? :::info 為了方便大家,C11 的連結我就貼在這邊了 [link](https://drive.google.com/file/d/1BGSbEazY5azERlFtP9DfmTTHgj-0AjY7/view) 記得善用 ctrl + f 去找尋關鍵字,有空的話也可以讀一下 uint 跟 int 在比大小時的轉換,這對於在寫 C 的你們在之後 debug 時可能會比較容易找到這些 bug. :::