題目:
給出乙個n * n的矩陣,其中的元素均為正整數。求這個矩陣的m次方。由於m次方的計算結果太大,只需要輸出每個元素mod (10^9 + 7)的結果。
input
第1行:2個數n和m,中間用空格分隔。n為矩陣的大小,m為m次方。(2 <= n <= 100, 1 <= m <= 10^9)output第2 - n + 1行:每行n個數,對應n * n矩陣中的1行。(0 <= n[i] <= 10^9)
共n行,每行n個數,對應m次方mod (10^9 + 7)的結果。
input示例
2 31 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...