---
tags : club
---
# 社課練習
## 2020/11/12
---
# 注意事項
## Judge網址
網址 : `cms.chisc.club`
有趣的記分板 : `cms-rank.chisc.club`
### 帳密
帳號 : 班級座號
密碼 : 學號
## 使用說明
網頁右上可以切換語言
![](https://i.imgur.com/6M39Lc8.png)
題目可以看這邊的或是網頁上的 ***題目敘述 -> 下載***
![](https://i.imgur.com/uK37rXq.png)
![](https://i.imgur.com/lznG7kq.png)
檔案格式請存 `.cpp` 不要存 `.c`
程式寫好後須上傳評分
![](https://i.imgur.com/mv5u2or.png)
輸出請照範例輸出的格式,該有空格就空格,不能多也不能少,最後記得要一定要**換行**。
對題目或任何東西有問題的可以在這發問 ((但我會比較慢回
![](https://i.imgur.com/JqJAsQV.png)
---
# 重複輸入
```cpp=
while(scanf("%d") > 0){
...
}
```
---
# 變數練習
## 題目 - 我想長高
### 內容
每個人都有心目中夢想的身高。
像小鳴就夢想著長到185cm。
請你算算看小鳴離他的夢想還差多遠。
---
### 輸入說明
一個正整數,代表小鳴目前的身高(<=185)
### 輸出說明
小鳴離夢想還差多少cm。
---
### 範例輸入 #1
```
150
```
### 範例輸出 #1
```
35 cm
```
---
### 範例輸入 #2
```
169
```
### 範例輸出 #2
```
16 cm
```
---
## 題目 - 剩多少錢?
### 內容
輸入錢包裡原本有多少錢、某一商品的價格,請輸出買完該商品之後錢包剩多少錢。假設錢包的錢大於等於該商品價格。
---
### 輸入說明
輸入資料共一行,包含兩個整數 N, M
N表示錢包裡原本有多少錢、M表示商品的價格
$0 < M \leq N \leq 10^6$
### 輸出說明
買完該商品之後錢包剩多少錢
---
### 範例輸入 #1
```
100 25
```
### 範例輸出 #1
```
75
```
---
### 範例輸入 #2
```
311246 25452
```
### 範例輸出 #2
```
285794
```
---
## 題目 - 等我一下
### 內容
「再等我20分鐘!」小鈴一邊打扮說著。
「每次等妳出門都好久-_-」小鳴無奈。
「那等我1200秒好了。」小鈴改口。
「ok!」小鳴覺得秒比分快多了,立刻答應。雖然再過30秒,他就會懊悔這件事了。
因為每次小鳴都搞不清楚秒數和小時、分、秒的對應關係,請你寫一個程式幫他一下吧!
---
### 輸入說明
一個正整數N,代表秒數
$0\leq N \leq 10^6$
### 輸出說明
輸出 N 秒等於 幾小時(hr) 幾分(min) 幾秒(sec)
---
### 範例輸入 #1
```
734
```
### 範例輸出 #1
```
0 hr 12 min 14 sec
```
---
### 範例輸入 #2
```
3751
```
### 範例輸出 #2
```
1 hr 2 min 31 sec
```
---
# 重複輸入練習
## 題目 - 多項式計算
### 內容
給你a, b, c及x,請你算出$ax^2+bx+c$的值。
---
### 輸入說明
題目有多筆輸入
每一筆有四個整數 a, b, c, x
$-1000\leq a,b,c,x \leq 1000$
### 輸出說明
對每筆輸入,輸出 $ax^2+bx+c$的值
---
### 範例輸入
```
1 2 3 4
0 0 100 20
1 0 0 11
```
### 範例輸出
```
27
100
121
```
---
## 題目 - 哈囉
### 內容
學習所有程式語言的第一個練習題 請寫一個程式,可以讀入指定的字串,並且輸出指定的字串。
---
### 輸入說明
題目有多筆輸入
每筆輸入有一字串 (字串大小 < 100)
### 輸出說明
依輸入的字串,輸出指定的字串,請參考範例
---
### 範例輸入
```
world
C++
mary
```
### 範例輸出
```
hello, world
hello, C++
hello, mary
```
---
# 條件判斷練習
## 題目 - 判斷
### 內容
給你a, b兩數,請你判斷a是不是b的倍數。
---
### 輸入說明
題目有多筆輸入
每筆輸入有兩個整數 a, b
$0 < a, b \leq 10^7$
### 輸出說明
對每一筆輸入 輸出a是不是b的倍數。
是 輸出Yes
不是 輸出No
---
### 範例輸入
```
10 2
2 10
7749 7
```
### 範例輸出
```
Yes
No
Yes
```
---
## 題目 - 我能結婚嗎?
### 內容
在民國100年以前,我國民法規定男女結婚最低限度的年齡則分別為 18 歲及 16 歲。
讓我們把時光倒回過去,請寫一個程式讓使用者輸入性別和年齡,判斷在民國100年以前他/她的年齡能不能結婚。
---
### 輸入說明
第一列:一個整數 1代表男生、2代表女生
第二列:一個整數代表年齡
### 輸出說明
可以結婚輸出You are marriageable.
不可以結婚輸出You are NOT marriageable.
---
### 範例輸入 #1
```
1
17
```
### 範例輸出 #1
```
You are NOT marriageable.
```
---
### 範例輸入 #2
```
2
17
```
### 範例輸出 #2
```
You are marriageable.
```
---
## 題目 - 三角形邊長
### 內容
三角形的三邊長一定滿足任兩邊邊長和大於第三邊。
反過來說,給你三根木條,任挑其中兩根木條長度和都大於第三根木條時,那這三根木條也一定能拼一個三角形。
請你寫個程式判斷一下,給你三根木條,長度分別為a、b、c時,這三根木條能不能拼成一個三角形。
---
### 輸入說明
輸入有若干列。
每一列有三個整數 a、b、c
### 輸出說明
若這三根木條能組成三角形,就輸出Yes,否則輸出No
---
### 範例輸入
```
3 5 3
5 2 2
7 3 4
3 7 5
2 7 1
```
### 範例輸出
```
Yes
No
No
Yes
No
```
---
## 題目 - 上學去吧!
### 內容
中和高中規定同學必須在 7:30 以前到校早自習,最後一堂課則在 17:00 下課。給你現在的時間,請判斷現在是上學時間或放學時間。
---
### 輸入說明
輸入只有一行,其中含有兩個由空格隔開的整數 hh 及 mm,hh mm 則代表現在的時間 (24小時制)。
### 輸出說明
如果現在是上學時間,請輸出「At School」,否則請輸出「Off School」
---
### 範例輸入
```
17 00
```
### 範例輸出
```
Off School
```
---
# 迴圈練習
## 題目 - 找出n的所有因數
### 內容
n的因數就是 可以整除n的數。
請你找出n的所有因數。
---
### 輸入說明
一個整數n。
### 輸出說明
輸出一列,由小到大依序輸出n的所有因數。
### 範例輸入
```
100
```
### 範例輸出
```
1 2 4 5 10 20 25 50 100
```
#### 提示
n 除以 n的因數 會餘0
---
## 題目 - 判斷質數
### 內容
質數是在大於1的正整數中,除了1和此整數自己以外,無法被其他正整數整除的數。
換句話說,質數是只有1和本身,共2個因數的數。
現在請你利用程式判斷一個數是不是質數。
---
### 輸入說明
每一列有一個整數n。
### 輸出說明
每一列:對應輸入的n,輸出n是不是質數(Yes or No)。
---
### 範例輸入
```
15
16
17
18
19
20
```
### 範例輸出
```
No
No
Yes
No
Yes
No
```
---
## 題目 - 有幾位數
### 內容
輸入一個 正整數n
請輸出 n 是幾位數
---
### 輸入說明
本題有多筆輸入,每筆輸入有一個整數n
### 輸出說明
對每筆輸入,輸出n是幾位數
---
### 範例輸入
```
101
2016
20160101
```
### 範例輸出
```
3
4
8
```
---
# 陣列練習
## 題目 - 翻轉吧,身高!
### 內容
又到了每學期健康檢查的時間。保健室阿姨總會抓一、兩個熱心服務的同學幫忙紀錄成績。
小鳴就是本學期的熱心代表。但是小鳴非常的粗心,輸入表格的時候把座號順序剛好弄顛倒了。
原來應該是1號同學的身高,變成了第N號同學的身高。
原來應該是2號同學的身高,變成了第N-1號同學的身高。
...
原來應該是N-1號同學的身高,變成了第2號同學的身高。
原來應該是N號同學的身高,變成了第1號同學的身高。
請你寫一個程式,幫小鳴把所有的人身高調回正確順序吧!
---
### 輸入說明
第1列:一個整數N,代表班上同學有N位。$0 < N \leq 100$
接著N列:同學的身高(座號順序顛倒)。
### 輸出說明
共N列:同學的身高(座號順序正確)。
---
### 範例輸入
```
10
170
168
172
175
150
156
183
185
165
150
```
### 範例輸出
```
150
165
185
183
156
150
175
172
168
170
```
---
## 題目 - 成績查詢系統
### 內容
「1號陳小鳴、2號王小鈴、3號黃柚子…」小鳴小聲地念著。
「你在做什麼啊?」小鈴詢問。
「新學期到了,把班上同學的座號和名字背起來啊。」小鳴回答。
「這麼厲害,那你背得起來大家的小考成績嗎?」小鈴故意刁難。
事實上,小鳴還真的背不起來。但是小鳴不想直接承認這件事。
要是能偷偷透過手機,用座號查詢每個人的小考成績,或許小鳴就能騙過小鈴自己能夠背起來了。
---
### 輸入說明
第1列:整數N、M,代表班上同學有N位、想查詢的成績有M筆。($0 < N,M \leq 100$)
接著N列:座號1~座號N同學的成績。
接著M列:欲查詢同學的座號。
### 輸出說明
共M列:被查詢同學的成績。
---
### 範例輸入
```
10 3
100
92
98
97
65
80
100
99
87
75
1
10
4
```
### 範例輸出
```
100
75
97
```
---
## 題目 - 關注學生
### 內容
根據英國研究顯示,老師常常會記得班上表現最好和表現最差的學生。
在21xx年,已經有機器可以計算學生綜合表現數值,稱之為心靈數值。
現在給你一整個班的心靈數值,請你找出最好學生、最差學生的心靈數值分別是多少。
---
### 輸入說明
第一列: 一個整數N,代表班上有幾名學生。$1 \leq N \leq 100$
第二列: N個整數,代表每位學生的心靈數值。$1 \leq 心靈數值 \leq 10000。$
### 輸出說明
共一列:兩個整數以空白隔開,分別為最大、最小的心靈數值。
---
### 範例輸入 #1
```
10
2715 862 2513 5971 2395 9626 7339 9915 8993 3098
```
### 範例輸出 #1
```
9915 862
```
---
### 範例輸入 #2
```
20
2764 1016 8332 6473 3273 2991 1258 8774 4523 9181 9492 2092 1995 7879 1578 2444 9528 3197 7885 5744
```
### 範例輸出 #2
```
9528 1016
```
---
## 題目 - 存存提提
### 內容
西批批銀行有很多顧客,每天都有許多客戶前來存款、提款。
存存提提下,銀行經理都搞混每個客戶到底帳戶裡有多少錢了 p(´⌒`。q)
請你寫一個程式,幫忙銀行處理客戶的交易資料吧!
---
### 輸入說明
第一列:一個整數N,代表有N個顧客。 N <= 100
第二列:一個整數T,代表有T筆交易。 T <= 10000
接著T列:三個整數n、t、m。代表第n名顧客,存款或提款了m元。 t=1代表存款;t=2代表提款。
假設顧客編號是 0 ~ N-1,每名顧客帳戶一開始存有 0 元。
### 輸出說明
經過所有交易後,每名顧客的存款為多少。存款可以是負的。
輸出 ***顧客編號 : 存款***
---
### 範例輸入
```
5
7
0 1 1000
4 2 600
2 1 200
1 1 10000
0 2 400
2 2 100
0 2 300
```
### 範例輸出
```
0 : 300
1 : 10000
2 : 100
3 : 0
4 : -600
```
---
## 題目 - 疊方塊
### 內容
3歲的小明喜歡玩他的方塊積木,他總是把方塊疊在一起形成高度不一的方塊堆。然後他說:這是一面牆。5歲的姊姊小美聽到了就跟小明說:真正的牆高度應該要一樣才行。小明聽了覺得有道理於是決定要搬動一些方塊使所有方塊堆的高度一樣。如下圖。由於小明是個懶惰的小孩,他想要搬動最小數目的方塊以達成這個目的,你能幫助他嗎?
![](https://i.imgur.com/hicZIdf.png)
---
### 輸入說明
第一列有一個數字n,代表有幾堆方塊。
第二列有n個數字分別代表這n堆方塊的高度hi。
你可以假設$1\leq n\leq 50$、$1\leq hi\leq 100$
方塊的總數一定可以整除堆數n,也就是說一定可以使所有的方塊堆同樣高度。
如果輸入的n=0,代表輸入結束。
### 輸出說明
一列為"The minimum number of moves is k."
k在這裡就是需搬動方塊最小的數目以使所有的方塊堆同一高度。
---
### 範例輸入 #1
```
6
5 2 4 1 7 5
```
### 範例輸出 #1
```
The minimum number of moves is 5.
```
### 範例輸入 #2
```
3
1 1 1
```
### 範例輸出 #2
```
The minimum number of moves is 0.
```
#### 提示
與一班的重複輸入不太一樣,要在n = 0時停止程式,
一樣可以用while(scanf(...) > 0),只要再判斷如果n = 0就直接break
---
## 題目 - 質因數分解(簡單版)
### 內容
質因數分解是指:給出一個正整數,將其寫成幾個質因數的乘積。
例如,給出45這個數,它可以分解成 3*5*5。
根據算術基本定理,分解結果是獨一無二的。
---
### 輸入說明
一個整數n。
$2 \leq n \leq 10^9$
### 輸出說明
n的質因數分解,用空格隔開因數。
---
### 範例輸入
```
120
```
### 範例輸出
```
2 2 2 3 5
```
---
## 題目 - 質因數分解(挑戰版)
與上一題相同,但輸出方法不同
### 內容
質因數分解是指:給出一個正整數,將其寫成幾個質因數的乘積。
例如,給出45這個數,它可以分解成 3*5*5。
根據算術基本定理,分解結果是獨一無二的。
---
### 輸入說明
一個整數n。 $2 \leq n \leq 10^9$
### 輸出說明
n的質因數分解,用空格隔開因數,且將相同因數合併以次方^表示。
---
### 範例輸入
```
120
```
### 範例輸出
```
2^3 3 5
```
---
## 題目 - 犧牲者
### 內容
有一個水壩的牆受到地震的影響受損了。事情緊急,必須馬上派人去修,以免水淹之患。 修護任務非常困難,還好現在有 n 個志願者。 政府製作了編號 1~n,總共n個號碼牌。每個志願者在去修理之前,會發給他一個號碼牌。 任務結束後,志願者把他的號碼牌交還回來。 現在水壩安全了,但不幸的是並不是每個志願者都有回來。有些志願者壯烈的犧牲了。 你的任務是根據交還回來的號碼牌,找出有哪些號碼牌的志願者犧牲了。
---
### 輸入說明
**輸入含有多筆測資。**
每筆測資2列,第一列有2個整數 n,R。($1 \leq R \leq n \leq 10000$)
n代表共有多少個志願者,R代表有回來的志願者數目。
接下來的一列有R個整數,代表有回來的志願者的號碼牌。
### 輸出說明
對每筆測資輸出一列。輸出犧牲者的號碼牌,由小到大排列。
請注意,每個號碼的後面都有一個空格(最後一個後面也有)。
如果每個志願者都有回來,請輸出單獨的一個 *
---
### 範例輸入
```
5 3
3 1 5
6 6
2 3 5 4 1 6
```
### 範例輸出
```
2 4
*
```
---
![](https://www.csie.ntu.edu.tw/~b98902112/cpp_and_algo/)