TopCoder

Thumb 10858505 1526162567637138 7571544688392644830 n
橘子睿
yo~

User's AC Ratio

66.7% (2/3)

Submission's AC Ratio

60.0% (3/5)

Description

Matlab 是一套強大而又方便的軟體,特別擅長於處理向量與矩陣的運算,在有些研究領域甚至完全取代 C 語言的功用……

廢話不多說,現在請你寫一個程式 Mitlab (Made In Taiwan Lab),模擬一部分 Matlab 的功能。

在Mitlab裡面,一共有26個變數,分別是小寫的a到z。變數的內容可能是空的,或是一個任意大小的整數矩陣。一開始執行 Mitlab 的時候,所有的變數內容都是空的,隨著程式的進行,它們可能會被賦予不同的內容,或是拿去作其他的運算。(矩陣就是一些排成長方形的數)

描述矩陣的方式如下(以範例說明):

[ 1 2 3 ; 4 5 6 ]

這樣會產生兩列三行的矩陣如下

[ 10 ; 20 ; 30 ]

會產生三列一行的矩陣如下

[ ]

會產生「空」

所有的元素、符號之間都會以一個空白隔開。

Mitlab 提供的命令 (每個命令一行) 如下:

  • 變數 = 陣列描述
  • 這會把此變數的內容設定成右邊所描述的樣子
  • 變數 = 變數
  • 這是把右邊那個變數的內容複製到左邊的變數裡面
  • 變數 = 變數 + 變數
  • 等號右邊兩個變數必須是一樣大 (列數一樣,行數一樣) 的矩陣或同時為空,然後把它們內容逐項相加,結果存到等號左邊的變數裡面。等號右邊變數為空時,結果也為空。例如:
  • 變數 = 變數 - 變數
  • 等號右邊兩個變數必須是一樣大 (列數一樣,行數一樣) 的矩陣或同時為空,然後把它們內容逐項相減,結果存到等號左邊的變數裡面。等號右邊變數為空時,結果也為空。
  • 變數 = 變數 * 變數
  • 等號右邊兩個變數必須是可乘的 (乘號左邊的變數的行數要跟乘號右邊的變數的列數相等) 的矩陣或同時為空,把乘號左邊變數的第1列與右邊變數的第1行逐項相乘然後把這些乘積加總起來,作為結果的第一列第一行元素的值;然後把左邊變數第2列與右邊變數第1行作的結果作第二列第一行元素的值…依此類推。所以產生的結果矩陣的列數會等同乘號左邊變數的列數;結果矩陣的行數會等同乘號右邊變數的行數。等號右邊變數為空時,結果也為空。 例如當下面兩個矩陣相乘的情形
    右邊的66 = 1*7+2*10+3*13;72 = 1*8+2*11+3*14;…;186 = 4*9+5*12+6*15
  • 變數 = 變數 / 變數
  • 等號右邊的兩個變數必須是可乘的,而且最右邊的變數必須是可逆的方陣(或兩個矩陣都是空),然後算出來的結果就是中間的變數乘上最右邊的變數的反矩陣然後再把每一個元素的值乘上最右邊那個變數的行列式值。如果等號右邊的變數為空,那結果也為空。
  • 變數 = 變數 \ 變數
  • 等號右邊的兩個變數必須是可乘的,而且最中間的變數必須是可逆的方陣 (或兩個矩陣都是空),然後算出來的結果就是中間的變數的反矩陣乘上最右邊的變數然後再把每一個元素的值乘上最中間那個變數的行列式值。如果等號右邊的變數為空,那結果也為空。

給你若干段Mitlab的命令,段落之間會以空行隔開(同一段落內不會有空行),假設每一段一開頭的時候所有的變數都是空,請你執行這些 Mitlab 程式,並在每一段落結束的時候依序(a到z)印出26個變數的內容,每個變數印一行,格式和上面寫的一樣,而不同段落間的結果以空行隔開。

你可以假設所有輸入的命令格式正確而且滿足應有的條件,是可以正確地執行的。同時過程中全部的矩陣長寬都不超過 30。

Input Format

請參考Description。

Output Format

請參考Description。

Sample Input

a = [ 1 2 3 ]
b = [ 4 5 6 ]
c = a + b
d = a - b

a = [ 1 2 ]
b = [ 3 ; 4 ]
c = a * b
d = b * a

a = [ 1 2 ; 3 4 ]
b = [ 1 1 ; 1 0 ]
c = a / b
d = b \ a

Sample Output

[ 1 2 3 ]
[ 4 5 6 ]
[ 5 7 9 ]
[ -3 -3 -3 ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]

[ 1 2 ]
[ 3 ; 4 ]
[ 11 ]
[ 3 6 ; 4 8 ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]

[ 1 2 ; 3 4 ]
[ 1 1 ; 1 0 ]
[ -2 1 ; -4 1 ]
[ -3 -4 ; 2 2 ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]

Hints

※2007/12/02:測試資料及題目敘述更正,感謝peter50216。
※2009/02/10:範例測資更正,感謝math120908。

Problem Source

原TIOJ1095 / NPSC2006初賽(prob D)

Subtasks

For Testdata: 0 ~ 0, Score: 100
No. Time Limit (ms) Memory Limit (KiB) Output Limit (KiB)
0 10000 65536 65536