# 第 $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 & 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:

---
## 正課開始~~~
---
### ++第一課:數石頭遊戲++
----
西元 $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">
“程式說明:因為系統會賦予數量不一的測試資料來測驗您的程式是否正確,因此必須先以一個 while 迴圈來讀取所有的測試資料。”
</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}]"}