矩陣快速冪模板

2021-06-26 22:05:07 字數 1311 閱讀 6506

【矩陣快速冪 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取模後的值。

注意:-1對3取模後等於2

輸入

第一行是乙個整數t,表示測試資料的組數(t<=10000)

隨後每行有六個整數,分別表示f(1),f(2),a,b,c,n的值。

其中0<=f(1),f(2)<100,-100<=a,b,c<=100,1<=n<=100000000 (10^9)

輸出輸出f(n)對1000007取模後的值

樣例輸入

2

1 1 1 1 0 5

1 1 -1 -10 -100 3

樣例輸出

5

999896

/*

構造矩陣

x使得 * x = ==

乘上n-1次x後就可得出 f(n)就是最終答案

也就 * x^n-1 = ;

*/#include #include #include #include #include #include #include #include #include using namespace std;

#define rep(i,a,n) for(int i = a; i < n; i++)

#define repe(i,a,n) for(int i = a; i <= n; i++)

#define per(i,n,a) for(int i = n; i >= a; i--)

#define clc(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

typedef long long ll;

#define mod 1000007

struct matrix

};matrix mul(const matrix& a, const matrix& b)//矩陣a*b

} return ans;

}matrix pow_mod(matrix x, int n)//快速冪

return ans;

}int main()

return 0;

}

矩陣快速冪模板

剛學了矩陣快速冪,花了點時間把之前的 修改一下寫成了矩陣類,就當做模板了.話不多說下面貼 首先是標頭檔案和巨集定義什麼的 include include include using namespace std define inf 1000000000 define maxm 20 define m...

矩陣快速冪模板

struct mat mat operator const mat c return res 上面是我的基本矩陣快速冪模板,其實矩陣快速冪難的不是你怎麼寫,難的是你矩陣怎麼構造。矩陣的構造,就是找遞推關係。要把需要用到的遞推關係包含操作矩陣上去。找到合適的初始向量和合適的操作矩陣,你基本就可以完成題...

矩陣快速冪 模板

問題 求解乙個n n矩陣的 m次冪。核心 構造矩陣。思想 利用二進位制優化時間複雜度。應用 優化遞迴公式!舉例 求解第n個斐波那契數。實現 include include include define maxn 100 define ll long long define mod 10000 usi...