第六題 尤拉四平方和恆等式

問題描述

尤拉四平方和恆等式(Euler's Four Square Identity)說明,如果兩個整數𝑎、𝑏 都能表示為四個整數平方數的和,則這兩個整數的乘積𝑎 ∗ 𝑏也能表示為四個整數平方數的和。
亦即
𝑎=𝑥12 +𝑥22 +𝑥32 +𝑥42
𝑏=y12 +y22 +y32 +y42

𝑎∗𝑏=z12 +z22 +z32 +z42

舉一例如下:
a = 30 = 1*1 + 2*2 + 3*3 + 4*4
b = 4 = 1*1 + 1*1 + 1*1 + 1*1

a*b = 120 = 0*0 + 2*2 + 4*4 + 10*10 或
a*b = 120 = 2*2 + 4*4 + 6*6 + 8*8

輸入說明

分別輸入兩組數字代表構成 a 和 b 的四個平方數,每組四個範圍為 0~5 的整數;數字間以空格隔開。
第一列輸入 a 的四個平方數第二列輸入 b 的四個平方數

輸出說明

輸出 a,b 和 a*b 的四個平方數組合。(a*b 的表示法不只一種,列出所有的組合,其中,四個平方數皆為非負整數)
第一列輸出:a = 四個平方數的和 = 列出哪四個平方數的和
第二列輸出:b = 四個平方數的和 = 列出哪四個平方數的和
第三列以後每列輸出一種 a*b 的四個平方數之和: a*b = 四個平方數的和 = 列出哪四個平方數的和
以輸入以下二列為例:
1 2 3 4
1 1 1 1
則輸出時,
第一列輸出:a = 30 = 1*1 + 2*2 + 3*3 + 4*4
第二列輸出:b = 4 = 1*1 + 1*1 + 1*1 + 1*1
第三列以後每列輸出一種 a*b,如下:
a*b = 120 = 0*0 + 2*2 + 4*4 + 10*10
a*b = 120 = 2*2 + 4*4 + 6*6 + 8*8
注意:第三列以後,同一列中所列出的四個平方數要由小到大排序輸出。不同列間的輸出順序,先比第一個數字,若相同則比第二個數字以此類推,每列間由小到大依序輸出。例如上例的第三列與第四列,比較四個平方數的第一個數字,因 0<2,所以輸出
第三列為 a*b = 120 = 0*0 + 2*2 + 4*4 + 10*10
第四行則為 a*b = 120 = 2*2 + 4*4 + 6*6 + 8*8

範例

輸入 輸出
1 2 3 4
1 1 1 1
a = 30 = 1*1 + 2*2 + 3*3 + 4*4
b = 4 = 1*1 + 1*1 + 1*1 + 1*1
a*b = 120 = 0*0 + 2*2 + 4*4 + 10*10
a*b = 120 = 2*2 + 4*4 + 6*6 + 8*8
3 2 0 1
1 1 2 2
a = 14 = 3*3 + 2*2 + 0*0 + 1*1
b = 10 = 1*1 + 1*1 + 2*2 + 2*2
a*b = 140 = 0*0 + 2*2 + 6*6 + 10*10
a*b = 140 = 1*1 + 3*3 + 3*3 + 11*11
a*b = 140 = 1*1 + 3*3 + 7*7 + 9*9
a*b = 140 = 2*2 + 6*6 + 6*6 + 8*8
a*b = 140 = 3*3 + 5*5 + 5*5 + 9*9