【矩陣快速冪 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取模後的值
樣例輸入
21 1 1 1 0 5
1 1 -1 -10 -100 3
樣例輸出
5999896
/*
構造矩陣
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...