--- tags: homework, 109, cpi title: '[109-cpi] HW1' --- # Homework 1 > Week 2 (9/21), Due: 9/28 09:00:00\ > [I/O補充內容](https://hackmd.io/YV8EdYzAQ1W_7sJMkD5Dqg) * 範圍:Introduction、Variable * 僅 printf, scanf,跳脫字元 & % * NOJ ## 元氣滿滿的書記 > [name=博傑] ### 敘述 某學園學生會的書記,簡稱書記,是個充滿朝氣的~~亂源~~女孩,總是能豪不在意的無視尷尬的氣氛,蹦出驚人之語打破僵局。現在,請你寫個程式,幫書記跟大小姐道早安吧。 ### 測資說明 **Input** 本題無輸入 **Output** 請你輸出 `Ohayo, Kaguya chan!!!` 於一行,代表書記的招呼語 ### Sample Input ``` ``` ### Sample Output ``` Ohayo, Kaguya chan!!! ``` --- ## 會長的生日蛋糕 > [name=映達] ### Description 明天就是 9 月 9 號了,也是會長的生日,大小姐準備了一個超~巨大蛋糕要幫會長慶生。大小姐先將蛋糕藏在學生會室的一個超~巨大櫃子中,打算到時候可以給會長一個大驚喜。 害羞的大小姐卻遲遲不敢將蛋糕取出,為了不讓蛋糕過期,大小姐家的女僕必須確認食材的有效期限,卻發現鮮奶油包裝上有效期限的格式很奇怪,請你寫個程式來幫助大小姐和她的女僕! 鮮奶油的包裝上寫著 `06/12/2020`,其格式依序為:日、月、年,要請你將它改成更「淺顯易懂」的格式:`2020 年 12 月 06 日`。 ### Input 只有一行輸入,包含一個日期:`dd/mm/yyyy`。 ### Output 輸出一行,用淺顯易懂的格式:`yyyy 年 mm 月 dd 日`。 ### Example Input ``` 06/12/2020 ``` ### Example Output ``` 2020 年 12 月 06 日 ``` ### Hint 需注意年、月、日的格式: - 年為四位數,不足補 0。 - 月、日為二位數,不足補 0。 輸出時「年、月、日」和「數字」間記得加空格。 --- ## 崩壞的減肥計劃 > [name=育辰] ### 敘述 L彥 最近暑假吃太多,睡飽吃,吃飽睡,發現自己變胖了想減肥,於是展開一連串的減肥計劃,開學後減少正餐數量並勤跑操場 ***──「摁...我肯定瘦了!」*** 於是去預約 $\text{In-body}$ 使用價值二十幾萬的高級儀器,測量體重、身高、脂肪比、肌肉量等等...孰料,這樣高檔的設備今天也出了一點狀況... 今假設 L彥 真實體重是 $65$,儀器上會顯示 $165$... 當他體重為 $87$,儀器上會顯示 $187$... 此時,L彥 很納悶真的變這麼胖嗎?從報告書上又看見脂肪比將近 $88%$, 開始崩潰 ***──「這絕對是失敗的減肥計劃啊啊啊!」*** 設 L彥 真實體重為 $K$,並以 $K_i$ 表示其 第 $i$ 位數之數值,依高中數學,我們知道 $\left \lfloor{\log_{10}{K}} \right \rfloor + 1= \text{Digit Number}$,儀器上除了原本體重 $K$ 外,量測之數字 $P$,其共有$(\left \lfloor{\log_{10}{K}} \right \rfloor + 2)$ 位數,且 $P_{((\left \lfloor{\log_{10}{P}} \right \rfloor)+1)} = 1$ (即儀器顯示數值之最高位為 $1$) 請你寫出一個程式,告訴他真相! 給定一數字 $P$ 表示儀器上顯示的體重,請輸出其真實體重 $K$。 **注意** * 本題的 $\text{log}$ 之使用符號,如: $\left \lfloor{\log_{10}{2}}\right \rfloor$**表向下取整,即無條件捨去到個位數**,在這邊以 $(\left \lfloor{\log_{10}{n}} \right \rfloor + 1)$想表達的是「有幾位數」 * 體重如下測資說明之範圍,題目並沒有提到體重所使用的「單位」,數值超出常理,單位轉換一下就會符合真實情境了,勿執著於這點 ### 測資說明 **Input** * Line $1$: 一整數 $P$ * **Limit** * $10 \leq P \leq 2^{31}-1$ * $P_{(1 + \left \lfloor{log_{10}{P}} \right \rfloor)} = 1$ **Output** * Line $1$: 一整數 $K$, 需換行 ### Sample Input 192 ### Sample Output 92 > 出題點:在尚未學習字串處理、運算的情況下,要怎麼處理「壞掉的體重計」?其最高位數會異常的多顯示一個 $1$,同學讀取時必須了解 `scanf("____");` 中間處的格式涵義即可輕鬆作答\ > 子任務一:位數 $3$, $10$%\ > 子任務二:位數 $2~3$, $15$%\ > 子任務二:不限,唯受 $P$ 之條件限制, $75$%\ > \ > ps. 誤解題目的同學,會利用「事前」學會的運算,輸出 輸入整數再扣除100的結果(也受範例測資影響),或是%100等等,若有人偷學判斷式,可能可以處理位數2-3的情況,僅能拿到25%的分數,不甚了解者會亂用,甚至用到字串處理,只需這樣讀取資料並輸出即可: > `scanf("1%d", &a);`