1550 問題 E: 藍橋杯算法提高VIP-矩陣乘方
時間限制: 1s
內(nèi)存限制: 128MB 提交: 724 解決: 231
題目描述
給定一個矩陣A,一個非負整數(shù)b和一個正整數(shù)m,求A的b次方除m的余數(shù)。
其中一個nxn的矩陣除m的余數(shù)得到的仍是一個nxn的矩陣,這個矩陣的每一個元素是原矩陣對應位置上的數(shù)除m的余數(shù)。
要計算這個問題,可以將A連乘b次,每次都對m求余,但這種方法特別慢,當b較大時無法使用。下面給出一種較快的算法(用A^b表示A的b次方):
若b=0,則A^b%m=I%m。其中I表示單位矩陣。
若b為偶數(shù),則A^b%m=(A^(b/2)%m)^2%m,即先把A乘b/2次方對m求余,然后再平方后對m求余。
若b為奇數(shù),則A^b%m=(A^(b-1)%m)*a%m,即先求A乘b-1次方對m求余,然后再乘A后對m求余。
這種方法速度較快,請使用這種方法計算A^b%m,其中A是一個2x2的矩陣,m不大于10000。
輸入
輸入第一行包含兩個整數(shù)b, m,第二行和第三行每行兩個整數(shù),為矩陣A。
輸出
輸出兩行,每行兩個整數(shù),表示A^b%m的值。
提示
零基礎同學可以先學習
視頻課程,包含C/C++、Python、百練、藍橋杯輔導、算法數(shù)據(jù)結(jié)構(gòu)等課程,提供視頻講解以及配套習題,還有老師答疑,
點擊這里了解課程詳情