POJ 3070 矩陣快速冪求斐波那契數列

2021-06-19 01:36:36 字數 882 閱讀 9323

方法一:矩陣快速冪取模求斐波那契數列

#include#include#define maxn 10000

using namespace std;

struct matrix

m;matrix mul(matrix a,matrix b)

matrix mtpow(matrix a,int k)

int main()

matrix u;

u=mtpow(m,n);

printf("%d\n",u.v[0][1]);

}return 0;

}

方法二:

這個**是從網上找到的,但是感覺特別適用,儘管現在有幾個地方我還不是特別理解,所以先貼進

來,以後慢慢懂。

# include #include# define maxn 30

# define mod 10000

short int power[maxn][4] = };

short int ans[4];

void mul(short int *a, short int *b, short int *c);

int main()

{ int n, i;

for (i = 1; i < maxn; ++i)

mul(power[i], power[i-1], power[i-1]);

while(~scanf("%d",&n))

{ans[0] = ans[3] = 1;

ans[1] = ans[2] = 0;

if (n == -1) break;

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

if (n & (0x1<

POJ3070 斐波那契數列 矩陣快速冪

題意就是讓你求斐波那契數列,不過n非常大,只能用logn的矩陣快速冪來做了 剛學完矩陣快速冪刷的水題,poj不能用萬能標頭檔案是真的煩 include include include include using namespace std typedef long long ll const int...

POJ3070 斐波那契數列遞推 矩陣快速冪模板題

題目分析 對於給出的n,求出斐波那契數列第n項的最後4為數,當n很大的時候,普通的遞推會超時,這裡介紹用矩陣快速冪解決當遞推次數很大時的結果,這裡矩陣已經給出,直接計算即可 1 include2 include3 using namespace std 45 const int mod 10000 ...

POJ3070 矩陣快速冪 模板

今天在補acmicpc焦作網路預選賽題,補l題時發現看不懂 後來學長告訴我這個 用的是矩陣快速冪,還有一種演算法是杜教bm自動機,這個以後再說,於是自己便找了個矩陣快速冪的模板題學習一下。矩陣快速冪的作用是簡化遞推的過程,比如斐波那契數列就可以用矩陣快速冪來表示 在這道題中就用到上圖的表示 incl...