---
# System prepended metadata

title: 程式測驗：

---

程式測驗：
===

1.

有一排燈泡彼此串連，後一個燈泡連著前面的燈泡，只有當前面的燈泡都亮起時，燈泡才會亮，給定一個數列 {2, 3, 4, 1, 5}，表示：

在第 0 次時開啟 2 號燈泡的開關，由於 1 號燈泡沒有被亮，所以此時 2 號燈泡不會亮；
在第 1 次時開啟 3 號燈泡的開關，由於 1 號燈泡與 2 號燈泡沒有亮，所以此時 3 號燈泡不會亮；
在第 2 次時開啟 4 號燈泡的開關，由於 1 號燈泡，2 號燈泡，與 3 號燈泡皆沒有亮，所以 4 號燈泡不會亮；
在第 3 次時開啟 1 號燈泡的開關，由於 1 號燈泡是第一個燈泡，打開開關時，燈泡便會亮，同時因為 1 號燈泡亮，已打開開關的 2 號燈泡也亮起，同理，3 號 4 號燈泡皆亮起；
在第 4 次時開啟 5 號燈泡的開關，由於前面的燈泡都亮著，所以 5 號燈泡也會亮；

因此我們說，依照這個數列順序將燈泡開啟時，第 k 次開啟的那個燈泡會亮的情形會發生 2 次；

請寫一個 function，輸入為一個 int 數列 A 與數列元素個數 N，

假設：

1. A 的元素兩兩皆不相同
2. A 的元素在集合 {1, 2, 3,..., N} 中
3. N 為集合 {1, 2, 3,..., N} 中的元素

假設表示 function 不需要檢查這些假設，輸入必符合這些假設。

重點是正確性而不是效率

int solution(int A[], int N){}



2.

給定兩個字串 T 與 S ，檢測 T 是否包含 S ；檢測項目如下：

1. 若 T 為 nicer ， S 為 nice ，則回傳 "INSERT r"；
2. 若 T 為 ill ， S 為 will ，則回傳 "REMOVE w"；
3. 若 T 為 tale ， S 為 sale ，則回傳 "CHANGE s t"；
4. 若 T 為 relate ， S 為 rate ，則回傳 "IMPOSSIBLE"；

char *solutione(char *T, char *S){}