原理:
$\left( }
}}\\
}}\end} \right) = \left( }
1&1\\
1&0\end} \right)\left( \begin
}1}}\\
\end \right)$
記這個矩陣為a,則有
$\left( }
}}\\
}\end} \right) = \left( \begin
\\\end \right)$
注意這種初始化方式,matrix為只有乙個二維陣列的結構體
1第一種要注意,界限的確定,要保證符合所有矩陣。struct
matrix2;
5 matrix ans = ;
9 matrix base = ;
1 #include2 #include3 #include4 #include5using
namespace
std;
6 typedef long
long
ll;7
struct
mat;
10 ll n=10
;11 ll mod=10000
;12 mat mul(mat &a,mat &b);
14for(int i=0;i<2;i++)19}
20}21return
c;22}23
mat pow(mat a,ll n);
25 b.m[0][0]=b.m[1][1]=1;26
while(n>0)31
return
b;32}33
intmain();
35 a.m[0][0]=a.m[1][0]=a.m[0][1]=1
;36 a=pow(a, n);
37 printf("
%lld\n
",a.m[1][0
]);38 }
1 #include2再介紹一題using
namespace
std;
3 typedef long
long
ll;4 typedef vectorvec;
5 typedef vectormat;
6 ll n=10;7
const
int m=10000
;8 mat mul(mat &a,mat &b)15}
16}17return
c;18
} 19
20mat pow(mat a,ll n)
25while(n>0)30
return
b;31}32
intmain()
推理過程如下:
$f\left( n \right) = s\left( n \right) - s\left( \right);$
又有$f\left( n \right) = p*f\left( \right) + q*f\left( \right)$
所以 $s\left( n \right) - s\left( \right) = p*\left( \right) - s\left( \right)} \right) + q*\left( \right) - s\left( \right)} \right)$
$s\left( n \right) = \left( \right)*s\left( \right) + \left( \right)*s\left( \right) - q*s\left( \right)$
推到這裡你應該知道怎麼把它化成矩陣乘法的形式了吧?注意到右邊有三個s(x)項所以矩陣遞推式左邊也要有三項寫出來就是
化簡一下
所以第s項到第e項的和就是s(e)-s(s-1) 注意是s(s-1)
解題方式與上面類似
1 #include2 #include3 #include4 #include5using
namespace
std;
6 typedef long
long
ll;7 ll mod=1000000009;8
struct
mat;
11ll l,r,res1,res2;
12 mat a=;
16 mat mul(mat &a,mat &b);
18for(int i=0;i<4;i++)23}
24}25return
c;26}27
28mat mod_pow(mat a,ll n);
30 b.m[0][0]=b.m[1][1]=b.m[2][2]=b.m[3][3]=1;31
while(n>0)36
return
b;37}38
39 ll res(mat &a)
4243
intmain()
50if(r==0) res2=1;51
else
55 ll ans=(res2-res1+mod)%mod;
56 printf("
%lld\n
",ans);57}
58 }
矩陣快速冪模板
剛學了矩陣快速冪,花了點時間把之前的 修改一下寫成了矩陣類,就當做模板了.話不多說下面貼 首先是標頭檔案和巨集定義什麼的 include include include using namespace std define inf 1000000000 define maxm 20 define m...
矩陣快速冪模板
矩陣快速冪 o log n nyoj301 580ms 時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給你乙個遞推公式 f x a f x 2 b f x 1 c 並給你f 1 f 2 的值,請求出f n 的值,由於f n 的值可能過大,求出f n 對1000007取模後的...
矩陣快速冪模板
struct mat mat operator const mat c return res 上面是我的基本矩陣快速冪模板,其實矩陣快速冪難的不是你怎麼寫,難的是你矩陣怎麼構造。矩陣的構造,就是找遞推關係。要把需要用到的遞推關係包含操作矩陣上去。找到合適的初始向量和合適的操作矩陣,你基本就可以完成題...