# | Problem | Pass Rate (passed user / total user) |
---|---|---|
13428 | Connect Four (step by step) |
|
13729 | Linked Letter |
|
13796 | Struct - Complex Number |
|
13810 | Sum of Prime Divisors |
|
Description
“四子棋”是一個經典的桌上遊戲,桌面上有立著的屏風小盒子,盒子分成7欄6列,每一欄各有一個開口可以由上方投入小圓片;遊戲開始後,兩名玩家分別持不同顏色的小圓片,並依序從開口投入圓片;圓片受地心引力影響,會落至底部或其他圓片上;當其中一名玩家讓4枚連續的小圓片,以橫著、直著、斜著的任一種方式連成一線即獲勝
(Excerpted from wiki: https://en.wikipedia.org/wiki/Connect_Four)
給定一串數字,代表依序投入白黑圓片的欄位;請試著計算是哪一方獲勝,並印出最後的結果
舉例
輸入字串為:4 6 4 3 3 6 4 2 3 3 4 1 1 6 5
輸出:
o wins!
- - - - - - -
- - - - - - -
- - - x o - -
- - - o o - -
- - - o o - x
- - x x o - x
Note:
- 對局一律由白方('o')先開始
- 輸入的字串有可能包含多餘的步數;例如上述例子(4 6 4 3 3 6 4 2 3 3 4 1 1 6 5),從第12個輸出字元(第一個1出現的地方)開始之後的步數,因為白方已經獲勝,所以可以不用繼續印在棋盤上
- 輸入的字串不可能包含不合理的步數,例如:將圓片投入已經滿了的欄位中;也不會出現平手的局面
- 利用字元 ‘-’ 來代表棋盤中的空格
- 利用字元 ‘x’ 來代表棋盤中的黑方
- 利用字元 ‘o’ 來代表棋盤中的白方
Input
o1 x1 o2 x2 o3 x3 o4 x4...
Note:
- 以上整數代表黑白圓片投入的欄位數
- 數字和數字之間以空白隔開
Output
輸出比須符合以下格式:
p wins!
c c c c c c c
c c c c c c c
c c c c c c c
c c c c c c c
c c c c c c c
c c c c c c c
Note:
- 輸出的最後必須要有一個換行符號 ('\n')
- p為’x’、’o’其中一個字元
Sample Input Download
Sample Output Download
Tags
Discuss
Description
再給定主要執行程式main.c (題號.c)、以及Header檔function.h (題號.h);請試著完成Header檔中未實現的函式:traversal()
function.h:
enum LetterType
- LowerCase: 代表輸出小寫字母
- UpperCase: 代表輸出大寫字母
- None: 代表不輸出字母
LinkedLetter
- letter (char) 儲存的英文字母
- letterType (enum LetterType) 代表需將字母輸出成大寫、小寫,或者不輸出。
- next (LinkedLetter*) 代表下一個LinkedLetter的記憶體位置
Methods:
- void traversal(LinkedLetter*) – 需不斷的拜訪傳進的LinkedLetter記憶體的下一個LinkedLetter記憶體(next)直至結束(NULL)。並將所有拜訪過的LinkedLetter中的字母(letter)依據其字母型態(letterType)的不同輸出成大寫字母、小寫字母,或不輸出。
hint:
- 可以透過字元的加減法輸出大寫字母
- 可以透過迴圈和next來不斷拜訪並取得下一個LinkedLetter
- 可以透過判斷LinkedLetter記憶體是否為NULL,來決定是否終止迴圈
function.c
Input
TTTTT
Note:
- 輸入 5 個字元 T 分別代表字母 a~e 的字元狀態
- T 為 'U', 'L', 'N' 其中一種
- 無需處理輸入
e.g.
UULLU > ABcdE
LLNLN > abd
Output
輸出符合以下格式:
a1b1c1d1e1
Note:
- 輸出的最後必須要有一個換行符號 ('\n')
- a1~e1 分別為大小寫不拘的字母 'a' ~ 'e'
Sample Input Download
Sample Output Download
Partial Judge Code
13729.cPartial Judge Header
13729.hTags
Discuss
Description
給定一個名為Complex(複數)的struct,如下列所示:
Matrix
- double real
- double imag
real 表示該複數實部的實數的值,imag 表示該複數虛部的實數的值
再給定主要執行程式 main.c (題號.c)、以及Header檔 function.h (題號.h);請試著完成Header檔中未實現的函式:Add()、Sub()、Mul()、Div()
Methods:
- Complex Add(Complex x, Complex y) – 將兩個複數相加並回傳(實部為兩複數實部相加,實部為兩複數虛部相加)
- Complex Sub(Complex x, Complex y) – 將兩個複數相減並回傳(實部為兩複數實部相減,實部為兩複數虛部相減)
- Complex Mul(Complex x, Complex y) – 將兩個複數相乘並回傳(實部為第一個複數實部平方減第二個複數的虛部平方,虛部為兩複數實部和虛部交叉相乘的和)
- Complex Div(Complex x, Complex y) – 將兩個複數相除並回傳(第一個複數乘上第二個複數的共軛複數 / 第二個複數乘上第二個複數的共軛複數的實部)
function.c
Input
輸入符合以下格式
op
r1 i1
r2 i2
無需處理輸入
Output
輸出符合以下格式
(real) + (imag)i
無需處理輸出
Sample Input Download
Sample Output Download
Partial Judge Code
13796.cPartial Judge Header
13796.hTags
Discuss
Description
任何的(大於2的)正整數皆可以透過質因數分解。輸入一大於 2 正整數 N,請計算出所有質因數的和。
e.g.
(prime divisors) 13 = 13; 45 = 3, 5; 1617 = 3, 7, 11
(sum of prime divisors) 13 > 13; 45 > 3 + 5 = 8; 1617 > 3 + 7 + 11 = 21
Hint:
- 先建一個質數表再去找 N 的質因數
Input
輸入符合以下格式:
N
Note:
- 2 <= N <= 20000
Output
輸出符合以下格式:
sum
Note:
- 輸出的最後必須要有一個換行符號 ('\n')