多處理機平行程式設計 作業2-1說明
---
## 題目:風神無雙
### 題目敘述
氣象專家台哥發明了一個神奇的預測颱風的方法,只要用一個 $D × D$ 的矩陣 $K$ 掃過氣壓圖就可以預測下一個時間點的氣壓圖,其中 $D$ 為奇數。令 $A_t [0..m − 1, 0..n − 1]$ 代表在 $t$ 時間時的氣壓圖矩陣,其中 $A_0$ 為題目給定的初始矩陣。下一個時間點的矩陣經由以下公式產生
$A_{t+1} [i,j]$ $=$ $\lfloor$ $($ $\frac{1}{D * D}$ $\sum_{\Delta_i= - \frac{D-1}{2}}^\frac{D-1}{2}$ $\space$ $\sum_{\Delta_j= - \frac{D-1}{2}}^\frac{D-1}{2}$ $\space$ $K [\frac{D-1}{2} + \Delta_i , \frac{D-1}{2} + \Delta_j] A_t[i+\Delta_i,j+ \Delta_j]$ $)$$+$$0.5$ $\rfloor$
其中 $0$ $\leq$ $i$ $\leq$ $m − 1$$,$ $0$ $\leq$ $j$ $\leq$ $n − 1$。由於地球是圓的,所以當 $[i$ $+$ $\Delta$$i$ $,$ $j$ $+$ $\Delta$$i$$]$ 超過$[0..m − 1, 0..n − 1]$ 時需轉換成對應的座標,比如 $[−1, −1]$ 轉換成 $[m − 1, n − 1]、[−2, −2]$ 轉換成 $[m − 2, n − 2]、[m, n]$ 轉換成 $[0, 0]$ 以此類推。請使用 MPI 來實作並輸出 $A_t$ 的結果。
### 輸入輸出說明
第一行只有一個數字 $t$,代表在 $t$ 時間的氣壓圖矩陣,其中 $1$ $\leq$ $t$ $\leq$ $70$。第二行中的兩個數字 $n$ 和 $m$ 為氣壓圖矩陣的長寬。接下來$n$ $*$ $m$個數字是$A_0$裡的數值 $($$Row-Major$$)$,輸入完 $A_0$ 後下一行即是矩陣 $K$ 的長寬以及數值 $($$Row-Major$$)$。
例如:
$\quad 2$
$\quad 2 \space 2$
$\quad 1 \space 2$
$\quad 3 \space 4$
$\quad 3$
$\quad 1 \space 4 \space 6$
$\quad 9 \space 8 \space 7$
$\quad 2 \space 3 \space 5$
第一行為 $2$ 代表要求 $A_2$,第二行的 $2$ $2$ 表示氣壓圖矩陣為$2$ $*$ $2$,第三、四行即代表 $A_0$,接者第五行的 $3$ 表示 矩陣 $K$ 的長寬,最後表示矩陣 $K$ 的內容。輸出的 $A_t$ 內容請以$Row-Major$的方式印出,如以下格式
$\quad$$59$ $62$ $60$ $62$ $\space$
<font color="#f00">注意:1.輸入的矩陣皆為int
$\space$$\space$$\space$$\space$$\space$$\space$$\space$ 2.輸出的數字後面都有空格
$\space$$\space$$\space$$\space$$\space$$\space$$\space$ 3.由於此份作業都使用整數的資料型態做運算,所以公式裡的加0.5以及取floor可以省略
</font>
### 繳交格式
在Github上傳一個程式碼檔案<font color="#f00">以及對應的Makefile檔案</font>,程式碼檔名為 學號_hw2_1
例如:p12345678_hw2_1.c p12345678_hw2_1.cpp都可
Makefile就叫Makefile