dp 矩陣乘法快速冪

2022-08-13 22:30:22 字數 1558 閱讀 3398

1> p1926 斐波那契

#include#include

#include

using

namespace

std;

long

long

n;const

int mod=1000000007

;long

long nw[2][2],ans[2][2

];long

long t[2][2

];void

mul1()

void

mul2()

void

mul3()

intmain()

nw[0][0]=nw[1][0]=nw[0][1]=1

; ans[

0][0]=ans[1][1]=1

;

while

(n)

mul3();

return0;

}

2>廣義斐波那契數列

這道題中的乘法,會爆ll,

所以只能用pow_add(),具體見**

#include#include

#include

using

namespace

std;

long

long

a,c,a0,n,mod,g;

long

long ans[3][3],nw[3][3],t[3][3

];long

long pow_add(long

long x,long

long

y)

return

ans;

}void

mul1()

void

mul2()

intmain()

printf(

"%d\n

",(pow_add(a1,ans[0][0])+pow_add(a0,ans[0][1])+pow_add(c,ans[0][2]))%mod%g);

return0;

}

3>ch30擺花

用矩陣快速冪加速dp,優化時間複雜度和空間複雜度

60->100

#include#include

#include

using

namespace

std;

intn,m;

const

int n=103,mod=1e9+7

;long

long

nw[n][n],ans[n],t[n][n],tt[n];

void

mul1()

void

mul2()

void

mul3()

intmain()

ans[

0]=1

;

while

(m)

mul3();

return0;

}

快速冪,矩陣乘法,矩陣快速冪

快速冪利用二進位制 複雜度 log級 include include include include using namespace std typedef long long ll typedef unsigned long long ull int q power int a,int b,int...

Tr A(矩陣乘法快速冪)

problem description a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。input 資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0...

Fibonacci數列(矩陣乘法快速冪)

題目描述 定義 f0 f1 1,fn fn 1 fn 2 n 2 稱為fibonacci數列。輸入n,求fn mod q。其中1 q 30000。輸入描述 第一行乙個數t 1 t 10000 以下t行,每行兩個數,n,q n 109,1 q 30000 輸出描述 檔案包含t行,每行對應乙個答案。樣例...