2715 - IP_2022_YOU_FIN_PRACTICE Scoreboard

Time

2022/12/27 12:00:00 2023/01/10 18:30:00

Clarification

# Problem Asker Description Reply Replier Reply Time For all team

# Problem Pass Rate (passed user / total user)
12996 Reversi
13400 Connect Four
13795 Prime Factorization
13796 Struct - Complex Number

12996 - Reversi   

Description

“黑白棋”是一種雙人對弈的棋類遊戲。棋盤共有8行8列共64格。開局時,棋盤正中央的4格先置放黑白相隔的4枚棋子。雙方輪流落子。只要落子和棋盤上任一枚己方的棋子在一條線上(橫、直、斜線皆可)夾著對方棋子,就能將對方的這些棋子轉變為我己方。不能在不能夾住對手的任一顆棋子的地方落子。遊戲在雙方都不能再落子,或棋盤已無空格的情況下結束,子多的一方勝。

給定一個棋局,以及黑方或白方下一個落子的位置,請試著模擬出落子後棋局的變化。

 

Note:

  1. 利用字元 ‘_’ 來代表棋盤中的空格
  2. 利用字元 ‘x’ 來代表棋盤中的黑子
  3. 利用字元 ‘o’ 來代表棋盤中的白子
  4. 字元之間存在著空格將其分開

舉例:

- 給定的棋局範例

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

_ _ _ o x _ _ _

_ _ _ x x x _ _

_ _ _ _ x o _ _

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

 

- 白子落在(5, 3)後的棋局變化

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

_ _ _ o x _ _ _

_ _ _ o x x _ _

_ _ _ o o o _ _

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _

Input

一個棋局;一個字元用來表示現在是黑方或白方落子;兩個整數用來表示落子的位置。

 

Note:

  1. ‘x’ 表示現在為黑方落子;‘o’ 表示現在為白方落子
  2. 測資中不會出現不合遊戲規則的落子位置

Output

落子後的棋局

輸出比須符合以下格式:

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 c c c c c c

c c c c c c c c

c c c c c c c c

 

Note:

  1. 輸出的最後必須要有一個換行符號 ('\n')
  2. 字元 c‘_’‘x’‘o’ 中一種

Sample Input  Download

Sample Output  Download

Tags




Discuss




13400 - Connect Four   

Description

“四子棋”是一個經典的桌上遊戲,桌面上有立著的屏風小盒子,盒子分成7欄並且分別有7個開口;遊戲開始後,兩名玩家分別持不同顏色的小圓片,並依序從開口投入圓片;圓片受地心引力影響會落至底部或其他棋子上;當其中一名玩家以4顆連續的棋子,以橫著、直著、斜著的任一種方式連成一線即獲勝

(Excerpted from wiki: https://en.wikipedia.org/wiki/Connect_Four)

 

給定一個棋局,以及黑白圓片下一個放入的位置;請試著計算出當該圓片落至定點時,跟該圓片相關的最大長度的連線為何

 

Note:

  1. 利用字元 ‘-’ 來代表棋盤中的空格
  2. 利用字元 ‘x’ 來代表棋盤中的黑方
  3. 利用字元 ‘o’ 來代表棋盤中的白方

Input

一個棋局;一個整數用來表示圓片落下的欄數,一個字元用來表示現在是黑方或白方

 

Note:

  1. ‘x’ 表示現在為黑色圓片;‘o’ 表示現在為白色圓片
  2. 測資中不會出現不合遊戲規則的放置方式;例如:不會放在已經滿了的欄位
  3. 欄位以序號 作為起始

Output

輸出比須符合以下格式:

Length

 

Note:

  1. 輸出的最後必須要有一個換行符號 ('\n')
  2. Length表示跟最後落子的圓片最大相關的連線長度

Sample Input  Download

Sample Output  Download

Tags

(&[])-> f(0<n)h[i]-> f(1<n)h[i-1].n=h[i] h[i].p=h[i-1]; [n-1].n=[0];B; cf NT[a-1].p.n=[].n [].n.p=[].p w(-)t=t.n; [].p=t [].n=t.n t.n.p=[] t.n=[] return head;



Discuss




13795 - Prime Factorization   

Description

任何的(大於2的正整數皆可以透過質因數分解,將該整數變成它質因數的乘積

e.g. 45 = 3*3*5, 1617 = 3*7*7*11

 

輸入一正整數 N,請輸出它質因數分解的結果

 

Hint:

  1. 先建一個質數表再去找 N 的質因數

Input

輸入符合以下格式:

N

 

Note:

  1. 2 <= N <= 20000

Output

輸出符合以下格式:

p1*p2*p3*...

 

Note:

  1. pi 為正整數 N 的質因數
  2. pi 按大小順序排列
  3. 輸出的最後必須要有一個換行符號 ('\n')

Sample Input  Download

Sample Output  Download

Tags




Discuss




13796 - Struct - Complex Number   

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

#include "function.h"
 
Complex Add(Complex x, Complex y)
{
    Complex ans;
    // TODO
    return ans;
}
 
Complex Sub(Complex x, Complex y)
{
    Complex ans;
    // TODO
    return ans;
}
 
Complex Mul(Complex x, Complex y)
{
    Complex ans;
    // TODO
    return ans;
}
 
Complex Div(Complex x, Complex y)
{
    Complex ans;
    // TODO
    return ans;
}

Input

輸入符合以下格式

op

r1 i1

r2 i2

 

無需處理輸入

Output

輸出符合以下格式

(real) + (imag)i

 

無需處理輸出

Sample Input  Download

Sample Output  Download

Partial Judge Code

13796.c

Partial Judge Header

13796.h

Tags




Discuss