矩陣快速冪 小澳的座標系

2021-07-27 11:23:51 字數 2386 閱讀 2851

矩陣快速冪一般是為了求解遞推問題

eg:菲波那切數列

關於矩陣快速冪,可以參見這裡and這裡

【題目描述】

小澳者表也,數學者景也,表動則景隨矣。

小澳不喜歡數學,可數學卻待小澳如初戀,小澳睡覺的時候也不放過。

小澳的夢境中出現了乙個平面直角座標系,自原點,向四方無限延伸。

小澳在座標系的 原點,他可以 向上、向左或者向右走。他可以走 n 步, 但不能經過相同的點。

小澳想知道他有多少種走法。

【輸入格式】
輸入檔名為 coordinate.in。

輸入檔案僅第一行乙個正整數 n,表示小澳可以走的步數。

【輸出格式】
輸出檔名為 coordinate.out。

輸出檔案共一行,輸出乙個正整數,表示答案(對 10^9+7 取模)。

【輸入輸出樣例 1 】
in:

2

out:

7

【輸入輸出樣例 1 說明】
從(0,0)出發走 2 步,共 7 種走法:

(0,0)->(0,1)->(0,2)

(0,0)->(0,1)->(1,1)

(0,0)->(0,1)->(-1,1)

(0,0)->(1,0)->(2,0)

(0,0)->(1,0)->(1,1)

(0,0)->(-1,0)->(-2,0)

(0,0)->(-1,0)->(-1,1)

【輸入輸出樣例 2 】
in:

3

out:

17

【資料規模與約定 】
測試點編號  n

1~2 n<=10

3~4 n<=100

5~6 n<=1000

7~8 n<=10^6

9~10 n<=10^9

solution:

做這題的時候先寫了乙個走迷宮的暴力dfs,找到遞推公式
//dfs暴力

#include

#define ll long long

#define mod 100000

using

namespace

std;

int n,cnt;

intmap[2002][2009];

int u[3]=,v[3]=;

bool inmap(int a,int b)

void dfs(int x,int y,int t)

for(i=0;i<3;i++)

}}int main()

十以內可以解決了(20分)
然後將1~10內的解輸出來找到遞推關係

矩陣快速冪之所以要用,是因為它確實求遞推式的時候很快
一般遞推:
//slow

#include

#define ll long long

#define mod 1000000007

using

namespace

std;

int n;

void solve()

if(n==2)

ll f1=3,f2=7,f3;

int i;

for(i=3;i<=n;i++)

printf("%i64d",f3%mod);

}int main()

矩陣快速冪:
//fast

#include

#define ll long long

#define mod 1000000007

int n;

struct m;

m s;

m work(m x,m y)

ans.map[i][j]%=mod;}}

return ans;

}void solve()

tmp=work(tmp,tmp);

n>>=1;

}printf("%d",s.map[2][1]%mod);

}int main()

if(n==2)

s.map[1][1]=3;s.map[2][1]=7;

solve();

return

0;}

矩陣快速冪 小講

呃.一直在玩,感覺暑假快廢過去了。一篇很好的文章 這是乙個應用吧,原題中有提示要用矩陣快速冪的,這裡有點坑 算是mark 一下 include include includeusing namespace std struct matrix ans,base matrix mul matrix a,...

小愛密碼(矩陣快速冪)

序號 137難度 困難時間限制 1000ms記憶體限制 80m 描述 小愛同學有乙個智慧型密碼鎖。鎖上有九位數字,小愛同學每次會給a,b,c,d,mod,n六個正整數。題目是這樣的 f 1 a,f 2 bf 1 a,f 2 b f n f n 1 cdot f n 2 cdot c d n gt 2...

矩陣的快速冪

問題 求m m矩陣的等比前n項和,即a a2 a3 a n struct node x,y 分析 矩陣乘法中關於等比矩陣的求法 a e 0 e e為單位矩陣。由等比矩陣的性質 n a e a n 1 a 1 a 2 a n 1 0 e 0 e 所以我們在求此類問題時 1.矩陣a擴大4倍 a e 0 ...