方法一:矩陣快速冪取模求斐波那契數列
#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...