luogu P3390 模板 矩陣快速冪

2021-10-11 21:42:42 字數 1309 閱讀 5756

這就是一道模板題,題目都很清楚的說了這是快速冪。

其實和快速冪差不多,不過有乙個地方要注意

快速冪中 ans

ansan

s 一般賦值為 1

11 ,目的是為了讓 ans

ansan

s 在第一次運算的時候可以直接得到值。

但是在矩陣乘法時我們應該用什麼來達到目的呢?

最簡單的做法就是在第一次進行 ans

ansan

s 的運算時,特判再賦值

但是還有乙個想法:

乙個矩陣乘了另乙個矩陣後能得到原來矩陣,這個矩陣會是什麼?如:∣12

34

∣\begin1 & 2\\3 &4\end

∣∣∣∣​1

3​24

​∣∣∣

∣​我們往回退,得:

∣ 10

01

∣\begin1 & 0\\0 &1\end

∣∣∣∣​1

0​01

​∣∣∣

∣​驗證一下發現也正確。

如此,快速冪即可

#include

#include

#include

#define lzh using

#define ak namespace

#define ioi std

lzh ak ioi;

const

int mod=

9973

;int n;

int a[4]

[4];

int ans[4]

[4];

int t[4]

[4];

void

add(

)voidcf(

)void

ksm(

int b)

}int

main()

a[1][

1]=0

,a[1][

2]=1

,a[1][

3]=0

; a[2]

[1]=

1,a[2]

[2]=

1,a[2]

[3]=

0;a[3][

1]=0

,a[3][

2]=1

,a[3][

3]=1

;ksm

(n-2);

cout<<

(ans[1]

[2]+ans[2]

[2]+ans[3]

[2])

%mod<}

luogu P3390 模板 矩陣快速冪

矩陣快速冪 給定n n的矩陣a,求a k 第一行,n,k 第2至n 1行,每行n個數,第i 1行第j個數表示矩陣第i行第j列的元素 輸出a k 共n行,每行n個數,第i行第j個數表示矩陣第i行第j列的元素,每個元素模10 9 7 2 11 1 1 11 1 1 1說明 n 100,k 10 12,矩...

P3390 模板 矩陣快速冪

矩陣快速冪 給定n n的矩陣a,求a k 輸入格式 第一行,n,k 第2至n 1行,每行n個數,第i 1行第j個數表示矩陣第i行第j列的元素 輸出格式 輸出a k 共n行,每行n個數,第i行第j個數表示矩陣第i行第j列的元素,每個元素模10 9 7 輸入樣例 1 2 1 1 11 1 輸出樣例 1 ...

P3390 模板 矩陣快速冪

題目背景 矩陣快速冪 題目描述 給定n n的矩陣a,求a k 輸入輸出格式 輸入格式 第一行,n,k 第2至n 1行,每行n個數,第i 1行第j個數表示矩陣第i行第j列的元素 輸出格式 輸出a k 共n行,每行n個數,第i行第j個數表示矩陣第i行第j列的元素,每個元素模10 9 7 輸入輸出樣例 輸...