---
# System prepended metadata

title: 多處理機平行程式設計 作業2-1說明
tags: [多處理]

---

多處理機平行程式設計 作業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