51nod 1113 矩陣快速冪

2021-08-04 04:10:50 字數 1043 閱讀 2415

題目:

給出乙個n * n的矩陣,其中的元素均為正整數。求這個矩陣的m次方。由於m次方的計算結果太大,只需要輸出每個元素mod (10^9 + 7)的結果。

input

第1行:2個數n和m,中間用空格分隔。n為矩陣的大小,m為m次方。(2 <= n <= 100, 1 <= m <= 10^9)

第2 - n + 1行:每行n個數,對應n * n矩陣中的1行。(0 <= n[i] <= 10^9)

output

共n行,每行n個數,對應m次方mod (10^9 + 7)的結果。
input示例
2 3

1 11 1

output示例
4 4

4 4

題解:

此題的基本原理還是 1137 的矩陣乘法 , 但此題的乘法的冪級數可達到 10^9, 但可通過減少乘法次數來提高執行效率, 例如: 求矩陣 a 的 25次冪 ,即(a)^25 , 將25 寫成二進位制形式, 即 00011001。 此時! 可將(a)^25 = (a)^1 * (a)^8 * (a)^16 , 通過這樣處理,則可以把本來要計算 25次 化為計算 16 + 3 = 19 次。

補充一句:

此題的語法弄了好久, 後來自己查了下資料, c++函式是不允許返回陣列的,可用指標, 或用結構體存都可。

關鍵**:

while(m)

完整**:

#include #include #define ll long long

using namespace std;

struct jiegou

;jiegou point(jiegou a,jiegou b, int n)

for(int i=0; i

51Nod 1113 矩陣快速冪

acm模版 模版題,矩陣快速冪,很直白的一道題。需要好好研究一下矩陣的知識了 include using namespace std define maxn 111 define mod x x mod define mod 1000000007 define ll long long int n ...

51nod 1113 矩陣快速冪

1113 矩陣快速冪 基準時間限制 3 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 給出乙個n n的矩陣,其中的元素均為正整數。求這個矩陣的m次方。由於m次方的計算結果太大,只需要輸出每個元素mod 10 9 7 的結果。input 第1行 2個數n和m,中間用空格分隔。n為矩...

51nod 1113 矩陣快速冪

矩陣快速冪板子 include typedef long long ll typedef long long ld using namespace std const ll maxn 1e5 7 ll n,m struct node 矩陣乘法 node cal node a,node b for i...