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