Python練習題 矩陣乘法 選自藍橋杯

2021-10-03 07:46:01 字數 3285 閱讀 2897

題目要求:

給定乙個n階矩陣a,輸出a的m次冪(m是非負整數)

輸入格式

第一行是乙個正整數n、m(1<=n<=30, 0<=m<=5),表示矩陣a的階數和要求的冪數

接下來n行,每行n個絕對值不超過10的非負整數,描述矩陣a的值

輸出格式

輸出共n行,每行n個整數,表示a的m次冪所對應的矩陣。相鄰的數之間用乙個空格隔開

樣例輸入

2 21[0,0] 2[0,1] 1[0,0] 2[0,1]

3[1,0] 4[1,1] 3[1,0] 4[1,1]

樣例輸出11+23 12+24

7 10

15 22

問題分析:

為了讓**簡單易懂,在這個題直接採用了建立類方法,將需要實現的功能賦予類的各個函式,可以將矩

陣看兩層的元列表list,以及根據矩陣相乘的運算規則,將矩陣乘法運算分解成矩陣翻轉matrixreversal()

以及矩陣的相乘運算matrixmultiplication(),最後再設計乙個函式將矩陣的輸出printmatrix()

**圖:

**如下:

import copy#引入copy模組

class

matrixoperation

(object):

#定義乙個類,矩陣演算法

def__init__

(self)

: self.list1=

#儲存使用者輸入的矩陣

defmain

(self)

:#函式主體

n,m=

map(

int,

input()

.strip(

).split(

' ')

)#獲得矩陣的階數和要求的冪數

for i in

range

(n):

#獲得使用者輸入的矩陣

lst=

input()

.strip(

).split(

' ')

self.list1=self.list1+

[lst]

if m>0:

#矩陣冪大於0時結果輸出

matrixr=copy.deepcopy(self.list1)

for i in

range(1

,m):

matrixr=self.matrixmultiplication(matrixr,self.list1)

self.printmatrix(matrixr)

else

:#矩陣冪等於0時結果輸出

matrix0=copy.deepcopy(self.list1)

for x in

range

(len

(self.list1)):

for y in

range

(len

(self.list1)):

if x==y:

matrix0[x]

[y]=

1else

: matrix0[x]

[y]=

0 self.printmatrix(matrix0)

defmatrixreversal

(self,matrixa)

:#矩陣翻轉函式

matrixb=

lst=

for i in

range

(len

(matrixa)):

for j in

range

(len

(matrixa)

):

[i])

matrixb=matrixb+

[lst]

lst=

return matrixb

defmatrixmultiplication

(self,matrixa,matrixb)

:#兩個矩陣的乘法運算

matrixc=copy.deepcopy(matrixa)

matrixb=self.matrixreversal(matrixb)

x,y,sum=0,

0,0while x<

len(matrixa)

:for i in

range

(len

(matrixb)):

count=

0for num in matrixb[i]

: sum=sum+

int(matrixa[x]

[count])*

int(num)

count+=

1 matrixc[x]

[y]=sum

sum,count=0,

0if y==

len(matrixa[x])-

1:y=

0else

: y+=

1 x+=

1return matrixc

defprintmatrix

(self,matrix)

:#矩陣輸出函式

for x in

range

(len

(matrix)):

for y in

range

(len

(matrix[0]

)):if y<

len(matrix[0]

)-1:

print

(matrix[x]

[y],end=

' ')

else

:print

(matrix[x]

[y])

matrix_operation=matrixoperation(

)matrix_operation.main(

)

執行結果圖:

Python練習題 序列求和 選自藍橋杯

題目要求 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 求1 2 3 n的值。輸入格式 輸入包括乙個整數n。輸出格式 輸出一行,包括乙個整數,表示1 2 3 n的值。樣例輸入 4樣例輸出 10樣例輸入 100樣例輸出 5050 說明 有一些試題會給出多組樣例輸入輸出以幫助你更好...

Python練習題 閏年判斷 選自藍橋杯

題目要求 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 年份是4的倍數而不是100的倍數 年份是400的倍數。其他的年份都不是閏年。輸入格式 輸入包含乙個整數y,表示當前的年份。輸出格式 輸出一行,如果給定...

Python練習題 特殊的數字 選自藍橋杯

題目要求 時間限制 1.0s 記憶體限制 512.0mb 問題描述 153是乙個非常特殊的數,它等於它的每位數字的立方和,即 153 111 555 333。程式設計求所有滿足這種條件的三位十進位制數。輸出格式 按從小到大的順序輸出滿足條件的三位十進位制數,每個數占一行。圖 如下 時間限制 1.0s...