# 資訊選修課
---
## 程式解題入門評分方式
| 項目 | 佔學期總成績比例 |
| ---------------------- | ---------------- |
| ZeroJudge/彰中OJ解題數 | 30% |
| 平時課堂表現 | 15% |
| 上機考試 | 45% |
| 校內外程式競賽/APCS | 10% |
---
## 第一次測驗重點:
:::warning
* 必考題
彰中OJ:a051, a052
TCGS:a021, a028
* 其他
TCGS:a001~a050
* ZeroJudge:
2.算術運算:
d053, d073, d489, d461
4.選擇結構:
a005, a012, b186, d511, c006
5.迴圈:
a147, a215, b150, c005, c022
6.陣列:
a058, b138, c067, b139, d212, a015, b130
:::
----
## 第二次測驗重點:
:::warning
* 必考題
choj:a057(仿 ZeroJudge d190,但執行結果採嚴格比對, 不可以有多餘的空格或空白行)
choj:a051(上次不及格的同學才考)
* 其他
7.字元處理及字元陣列:
a009, d235, c054, b187, d086, a020
8.字串處理:
a022, a011, d267, c007, d275, d422
9.質數判斷:
a121, c033(1視為質數), d117(1視為質數),
a007, d709(記得處理1不是質數), d705(記得處理1不是質數)
10.大數加減法:
c034, a884, d056, d202
b016,b017,b018(choj)
11.sort
d190, d153, d269, a225, b966
b019,b020,b021(choj)
12.字串串流
d392, d430, d018, d098, a158
b014,b015(choj)
:::
---
## ZeroJudge練習題列表
----
### 1. 基本輸出/輸入:
[a001](https://zerojudge.tw/ShowProblem?problemid=a001),[a002](https://zerojudge.tw/ShowProblem?problemid=a002)
### 2. 算術運算:
[d053](https://zerojudge.tw/ShowProblem?problemid=d053), [d073](https://zerojudge.tw/ShowProblem?problemid=d073), [d489](https://zerojudge.tw/ShowProblem?problemid=d489), [d461](https://zerojudge.tw/ShowProblem?problemid=d461)
### 3. 比較、邏輯運算(不用if)
[d058](https://zerojudge.tw/ShowProblem?problemid=d058), [d063](https://zerojudge.tw/ShowProblem?problemid=d063), [d068](https://zerojudge.tw/ShowProblem?problemid=d068), [d485](https://zerojudge.tw/ShowProblem?problemid=d485), [d460](https://zerojudge.tw/ShowProblem?problemid=d460)
### 4. 選擇結構:
[a003](https://zerojudge.tw/ShowProblem?problemid=a003), [a004](https://zerojudge.tw/ShowProblem?problemid=a004), [a005](https://zerojudge.tw/ShowProblem?problemid=a005), [a012](https://zerojudge.tw/ShowProblem?problemid=a012), [b186](https://zerojudge.tw/ShowProblem?problemid=b186), [d511](https://zerojudge.tw/ShowProblem?problemid=d511), [c006](https://zerojudge.tw/ShowProblem?problemid=c006)
### 5. 迴圈:
[a147](https://zerojudge.tw/ShowProblem?problemid=a147), [a215](https://zerojudge.tw/ShowProblem?problemid=a215), [b150](https://zerojudge.tw/ShowProblem?problemid=b150), [c005](https://zerojudge.tw/ShowProblem?problemid=c005), [c022](https://zerojudge.tw/ShowProblem?problemid=c022)
### 6. 陣列:
[a058](https://zerojudge.tw/ShowProblem?problemid=a058), [b138](https://zerojudge.tw/ShowProblem?problemid=b138), [c067](https://zerojudge.tw/ShowProblem?problemid=c067), [b139](https://zerojudge.tw/ShowProblem?problemid=b139), [d212](https://zerojudge.tw/ShowProblem?problemid=d212), [a015](https://zerojudge.tw/ShowProblem?problemid=a015), [b130](https://zerojudge.tw/ShowProblem?problemid=b130),
### 7. 字元處理及字元陣列:
[a009](https://zerojudge.tw/ShowProblem?problemid=a009), [d235](https://zerojudge.tw/ShowProblem?problemid=d235), [c054](https://zerojudge.tw/ShowProblem?problemid=c054), [b187](https://zerojudge.tw/ShowProblem?problemid=b187), [d086](https://zerojudge.tw/ShowProblem?problemid=d086), [a020](https://zerojudge.tw/ShowProblem?problemid=a020),
### 8. 字串處理:
[a022](https://zerojudge.tw/ShowProblem?problemid=a022), [a011](https://zerojudge.tw/ShowProblem?problemid=a011), [d267](https://zerojudge.tw/ShowProblem?problemid=d267), [c007](https://zerojudge.tw/ShowProblem?problemid=c007), [d275](https://zerojudge.tw/ShowProblem?problemid=d275), [d422](https://zerojudge.tw/ShowProblem?problemid=d422),
### 9. 質數判斷:
[a121](https://zerojudge.tw/ShowProblem?problemid=a121), [c033](https://zerojudge.tw/ShowProblem?problemid=c033)(1視為質數), [d117](https://zerojudge.tw/ShowProblem?problemid=d117)(1視為質數), [a007](https://zerojudge.tw/ShowProblem?problemid=a007),
[d709](https://zerojudge.tw/ShowProblem?problemid=d709)(記得處理1不是質數), [d705](https://zerojudge.tw/ShowProblem?problemid=d705)(記得處理1不是質數),
### 10. 大數加減法:
[c034](https://zerojudge.tw/ShowProblem?problemid=c034), [a884](https://zerojudge.tw/ShowProblem?problemid=a884), [d056](https://zerojudge.tw/ShowProblem?problemid=d056), [d202](https://zerojudge.tw/ShowProblem?problemid=d202),
[b016](http://choj.me/problem/b016), [b017](http://choj.me/contest/3/problem/b017), [b018](http://choj.me/contest/3/problem/b018)(TCGS)
### 11. sort
[d190](https://zerojudge.tw/ShowProblem?problemid=d190), [d153](https://zerojudge.tw/ShowProblem?problemid=d153), [d269](https://zerojudge.tw/ShowProblem?problemid=d269), [a225](https://zerojudge.tw/ShowProblem?problemid=a225), [b966](https://zerojudge.tw/ShowProblem?problemid=b966),
[b019](http://choj.me/problem/b019), [b020](http://choj.me/contest/3/problem/b020), [b021](http://choj.me/contest/3/problem/b021)(TCGS)
### 12. 字串串流
[d392](https://zerojudge.tw/ShowProblem?problemid=d392), [d430](https://zerojudge.tw/ShowProblem?problemid=d430), [d018](https://zerojudge.tw/ShowProblem?problemid=d018), [d098](https://zerojudge.tw/ShowProblem?problemid=d098), [a158](https://zerojudge.tw/ShowProblem?problemid=a158),
[b014](http://choj.me/contest/3/problem/b014), [b015](http://choj.me/contest/3/problem/b015)(TCGS)
### 13. 數論相關:
[a024](https://zerojudge.tw/ShowProblem?problemid=a024), [a010](https://zerojudge.tw/ShowProblem?problemid=a010), [a034](https://zerojudge.tw/ShowProblem?problemid=a034), [b112](https://zerojudge.tw/ShowProblem?problemid=b112),
### 14. 動態規劃(最大連續元素和)
d784, a540, a164(LIS)
b032(TCGS), d052(LCS)
b033(TCGS), d674(找零錢)
b028(TCGS), d904(01背包)
b030(TCGS), b184
### 15. 向量vector
b001, b002, b003, b005(TCGS), 10763(UVa), c073
### 16. 雙向鏈結串列list
11988(UVa), c086
### 17. set
c122, d129, d442
### 18. map
a743, b162, 156(UVa)
### 19. stack, queue, priority_queue
b304, e155, d221, d750
### 20. 貪婪法
b034, b035, b036, h007, h070(TCGS), d418, c134
### 21. 遞迴與分治法
b022, b023(TCGS), d219, d732, 10017(UVa)
### 22. DFS
d115, c074
b037, b038, b039, b040(TCGS)
### 23. Floyd-Warshall最短路徑
h019(TCGS), d908
### 24. Disjoint Sets
a445, d813
## 網站連結
:::info
[新竹女中黃惟學習歷程](https://yuihuang.com/)
[嘉中APCS題單](https://hackmd.io/@cube/rJc2MfkXF)
[埃氏篩法](https://zh.wikipedia.org/wiki/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%BC%E7%AD%9B%E6%B3%95)
[米勒-拉賓質數判定法](https://zh.wikipedia.org/wiki/%E7%B1%B3%E5%8B%92-%E6%8B%89%E5%AE%BE%E6%A3%80%E9%AA%8C)
[cin,cout加速](https://www.itread01.com/content/1549179726.html)
[從零開始的演算法競賽入門教學](https://emanlaicepsa.github.io/)
:::
## pointer
```cpp=
// *的二種用法
#include <iostream>
using namespace std;
int main()
{
int num = 10;
//取址(Address-of)運算子 & 用來取得變數的儲存位置
cout<<"變數num的記憶體位址:"<< &num <<endl;
cout<<"變數num的值:"<< num <<endl<<endl;
int *ptr = &num ;
cout<<"指標 ptr 儲存的值:"<< ptr <<endl;
//取值(Dereference)運算子 * 用來提取指標指向的資料
cout<<"取出 ptr 指向的記憶體位置之值:"<< *ptr <<endl<<endl;
*ptr = 20;
cout<<"*ptr = "<< *ptr <<endl;
cout<<"num = "<< num <<endl<<endl;
// 如果宣告指標但不指定初值,則指標指向的位址是未知的,
// 存取未知位址的記憶體內容會造成不可預知的錯誤(通常是記憶體區段錯誤)
// 指標的本質是指向某個存在的變數, 如果不想多開一個變數給它命名, 可用new指令
int *ptr2=new int;
*ptr2 = 100;
cout<<"*ptr2 = "<< *ptr2 <<endl<<endl;
int a[5] = {10,20,30,40,50};
ptr=a;
cout<<"a :"<< a <<endl;
cout<<"ptr :"<< ptr <<endl<<endl;
for(int i=0;i<5;i++)
{
cout<<"&a["<<i<<"]: "<< &a[i];
cout<<"\t ptr+"<<i<<": "<< ptr + i <<endl;
}
cout<<endl;
// 以陣列方式存取資料
for(int i=0;i<5;i++)
cout<<"a["<<i<<"]: "<< a[i] <<endl;
cout<<endl;
// 以指標方式存取資料
for(int i=0;i<5;i++)
cout<<"*(ptr+"<<i<<"): "<< (*(ptr + i)) <<endl;
return 0;
```