# 第 $N$ 次社課 $\Large{N=6}$ --- # 在開始之前 ---- ## ~~你誰啊你~~ ---- ## 講者介紹 - 東區學科能力競賽第四名 - TOI 新手組滿分 - TOI 潛力組~~滿分~~$200/300$ 分 - NPSC 2019初賽 第 $20$ 名 - Codeforces 台灣 第 $223$ 名 ---- <!-- .slide id="fragments" --> <h3>還記得之前學了什麼嗎?</h3> <p class="fragment"><code>printf</code></p> <p class="fragment"><code>if</code><span class="fragment"><code>, else if</code></span><span class="fragment"><code>, else</code></span></p> <p class="fragment"><code>for</code><span class="fragment"><code>, while</code></span><span class="fragment"><code>, do ...while</code></span></p> <p class="fragment"><code>switch &amp; case</code></p> <!-- ## 還記得之前學了什麼嗎? - `printf` - `if` - `for` - `while` - `do ...while` - `switch` --> ---- <!-- .slide id="fragments" --> <h3>還記得你們寫了什麼程式嗎?</h3> <p class="fragment">印星星</p> <p class="fragment">數石頭</p> <p class="fragment">其他的呢?</p> <!-- ## 還記得你們寫了什麼程式嗎? - 印星星 - 數石頭 - 其他的呢? --> ---- ### 就讓身為東區第四名的我來教你們吧 :100: ![image alt](https://i.ytimg.com/vi/an2G10_YnXc/maxresdefault.jpg "LOLI") --- ## 正課開始~~~ --- ### ++第一課:數石頭遊戲++ ---- 西元 $9223372036854775807$ 年,這個星球早已變成液態,人們也已經 $9223372036854773788$ 年沒有接觸過固態的石頭了。但是,有兩個小孩 Alice 跟 Bob 在一次外出探險的時候掉入了時光隧道,回到了西元 $9102$ 年。 ---- 當然 Alice 跟 Bob 非常的驚慌,不過由於 Alice 家裡 **非常** 的有錢,在給了路人甲一堆金幣之後,路人甲相信了他們的遭遇,並開始跟他們娓娓道來這世界的一些規則: ---- 1. 這個世界唯一信仰石頭真神,你的一切行為都有石頭警察看著。 2. 這個世界的通用貨幣是石頭,每個人可以用石頭交易。 3. 在交易中付出石頭的人必須告訴對方自己還剩多少石頭。 4. 違反 3. 的人將會受到沒收全部財產的懲罰。 ---- 因為 Alice 是個天才,藉由領先了 $9223372036854766705$ 年的知識,他迅速的賺到大量的石頭,而他也慷慨的將這些石頭與 Bob 分享。 ---- Bob 常常會跟 Alice 要石頭,他們遵循著這條規則,每次被要石頭後 Alice 會告訴 Bob 他還剩下幾顆。 雖然 Alice 很富有,有 $9223372036854775807$ 顆石頭,但當然,帶著這麼多石頭非常不方便,所以 Alice 只會帶 $N$ 顆石頭出門。但是其實 Alice 跟 Bob 的數學都不好,而如果他們在數石頭的過程中出了差錯,Alice 的石頭將會被路邊的石頭警察全數沒收。 ---- 你是 Alice 跟 Bob 在這個世界上唯一的朋友,聽說你很會寫程式,現在 Alice 跟 Bob 轉而尋求你的幫助,希望你可以幫他們算好每次交易完成時,Alice 還剩下多少石頭。 ---- ### 輸入格式 ``` N Q a1 a2 ... aQ ``` ### 輸出格式 ``` 被拿走了a1顆石頭,還有b1顆 (如果石頭還夠) 石頭不夠,還有b2顆 (如果石頭不夠) 我沒石頭了qaq (如果石頭都被拿完了) ``` ---- ### 範例輸入 ``` 15 5 7 9 6 2 1 ``` ### 範例輸出 ``` 被拿走了7顆石頭,還有8顆 石頭不夠,還有8顆 被拿走了6顆石頭,還有2顆 被拿走了2顆石頭,還有0顆 我沒石頭了qaq ``` ---- ## 有想到作法了嗎? ---- ##### 流程圖 ```flow op1=>start: 輸入石頭數量 op2=>operation: 輸入 Bob 想拿的數量 co1=>condition: Alice 還有足夠的石頭嗎? op3=>operation: Alice 的石頭扣掉 Bob 想要的數量 co2=>condition: Alice 還有石頭嗎? en=>end: 沒有石頭了qaq op1(bottom)->op2(bottom)->co1 co1(yes, bottom)->op3(right)->co2 co1(no, left)->op2 co2(yes, top)->op2 co2(no)->en ``` ---- ##### 程式碼 ```cpp= #include<stdio.h> int main() { int N, Q, k; scanf("%d%d", &N, &Q); for (int i = 0; i < Q; ++i) { scanf("%d", &k); if (N == 0) { printf("我沒石頭了qaq\n"); } else if (N - k < 0) { printf("石頭不夠,還有%d顆\n", N); } else { N -= k; printf("被拿走了%d顆石頭,還有%d顆\n", k, N); } } return 0; } ``` --- ## ++第一點五課:++ ## ++Online Judge 介紹++ ---- ### Online Judge 是什麼? - 線上評測系統 - 會有很多題目 - 在寫完程式之後,可以丟上去,他會幫你自動檢查你的程式是否正確 ---- ### 題目的架構 1. 題目敘述 2. 輸入/輸出格式 3. 時間/記憶體容量限制 4. 測資範圍 5. 範例輸入輸出 ---- ### 怎麼看回傳的結果? - `AC (Accepted)` - 你的程式通過了這題 - `WA/NA (Wrong Answer)` - 你的程式輸出了錯誤的答案 - `TLE (Time Limit Exceeded)` - 你的程式執行太久了 ---- ### 怎麼看回傳的結果? - `MLE (Memory Limit Exceeded)` - 你的程式使用了太多空間了 - `RE (Runtime Error)` - 你的程式使用到了未定義的空間 - `CE (Compile Error)` - 編譯錯誤 ---- <!-- .slide: data-background-iframe="https://zerojudge.tw" data-background-interactive --> <div style="position: absolute; width: 40%; right: 0; box-shadow: 0 1px 4px rgba(0,0,0,0.5), 0 5px 25px rgba(0,0,0,0.2); background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px; font-size: 20px; text-align: left;"> <h2><a href="https://zerojudge.tw/">ZeroJudge</a></h2> <p>先到這裡申請帳號吧</p> </div> --- ## ++第二課:基礎題目練習++ ---- - ZJ a001 - ZJ a002 - ... ---- <blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations"> &ldquo;程式說明:因為系統會賦予數量不一的測試資料來測驗您的程式是否正確,因此必須先以一個 while 迴圈來讀取所有的測試資料。&rdquo; </blockquote> <!-- .slide id="fragments" --> <p class="fragment">不知道有多少輸入?</p> <p class="fragment">那要怎麼處理?</p> ---- ## `EOF(End Of File)` ```cpp int main() { int n; while (scanf("%d", &n) != EOF) { ... } return 0; } ``` 會一直讀到輸入結束為止 ---- ## `system("pause")` 這一條指令會讓程式執行到的時候等待有人按 `Enter`,但是這是 Online Judge,沒有人會來按 `Enter`,程式反而會因為一直停在這裡而拿到 `TLE`。 ---- ## 練習時間 ---- <!-- .slide: data-background-iframe="http://cs.cysh.cy.edu.tw/php_system/acm_statistics/basic_problem.html" data-background-interactive --> <div style="position: absolute; width: 40%; right: 0; box-shadow: 0 1px 4px rgba(0,0,0,0.5), 0 5px 25px rgba(0,0,0,0.2); background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px; font-size: 20px; text-align: left;"> <h2><a href="http://cs.cysh.cy.edu.tw/php_system/acm_statistics/basic_problem.html">ZeroJudge 的練習題單</a></h2> <p>如果看不到這頁就是他被擋下來ㄌ,自己點連結進去看ㄅ</p> </div> --- ## Credit : - Nkl5RDZZZVg1N2F0 - hq8398 - SorahISA
{"metaMigratedAt":"2023-06-15T02:14:13.192Z","metaMigratedFrom":"YAML","title":"20191204_HLHS_Infor","breaks":true,"slideOptions":"{\"allottedMinutes\":30,\"slideNumber\":true,\"theme\":\"solarized\",\"transition\":\"slide\"}","contributors":"[{\"id\":\"e573a1ba-d69b-44a7-a0d5-9d817fb786cc\",\"add\":7812,\"del\":2625},{\"id\":\"50520b8d-a2d3-4e49-b39e-7b53e571cadc\",\"add\":53,\"del\":40}]"}
    293 views
   Owned this note