7_22_G Yet another Number Sequence(矩阵快速幂)
2016-09-05 09:59
543 查看
7_22_G Yet another Number Sequence
题意
给出数列前两项,按斐波那契数列的方式计算,求第n个数的后几位。思路
裸的矩阵快速幂取模代码
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 4; const int mod[5] = {0, 10, 100, 1000, 10000}; typedef long long ll; struct Mat { int maze[maxn][maxn]; }; int choose; Mat Mat_mul(const Mat& a, const Mat& b){ Mat res; for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++){ res.maze[i][j] = 0; for(int k = 0; k < 2; k++) { res.maze[i][j] += (a.maze[i][k] * b.maze[k][j]) % mod[choose]; } res.maze[i][j] %= mod[choose]; } return res; } Mat Mat_Qpow(int n){ Mat base,res; base.maze[0][0] = base.maze[0][1] = base.maze[1][0] = 1; base.maze[1][1] = 0; res.maze[0][0] = res.maze[1][1] = 1; res.maze[0][1] = res.maze[1][0] = 0; while(n > 0){ if(n & 1) { res = Mat_mul(res, base); } base = 978b Mat_mul(base, base); n >>= 1; } return res; } int main(){ int T; scanf("%d", &T); while(T--){ int a ,b,n,chose; scanf("%d %d %d %d", &a,&b,&n,&choose); auto ans= Mat_Qpow(n-1); if(n == 0) {ans.maze[0][0] = 0 ; ans.maze[0][1] = 1;} else if(n == 1) {ans.maze[0][0] = 1 ; ans.maze[0][1] = 0;} printf("%d\n", (ans.maze[0][0] * b + ans.maze[0][1] *a) % mod[choose]); } return 0; }
相关文章推荐
- UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- UVA 10698 Yet another Number Sequence 矩阵快速幂
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- 矩阵的运算 --- 矩阵快速幂(UVA10689 - Yet another Number Sequence)
- UVA - 10689 Yet another Number Sequence 矩阵快速幂
- UVA 10689 - Yet another Number Sequence(矩阵快速幂)
- Codeforces 392-C Yet Another Number Sequence (矩阵快速幂)
- Yet Another Number Sequence CodeForces - 392C 矩阵快速幂
- Yet Another Number Sequence——[矩阵快速幂]
- uva 10689 Yet another Number Sequence【矩阵快速幂】
- uva 10689 - Yet another Number Sequence(矩阵快速幂)
- CodeForces 392 C.Yet Another Number Sequence(矩阵快速幂)
- Yet another Number Sequence UVA - 10689 (矩阵快速幂)
- 【矩阵快速幂】UVA 10698 G - Yet another Number Sequence
- UVA-10689 Yet another Number Sequence (矩阵二分幂模板)
- 【 CodeForces - 392C】 Yet Another Number Sequence (二项式展开+矩阵加速)
- Number Sequence HDU - 1005 (矩阵快速幂)
- UVA10689-Yet another Number Sequence
- uva10689 Yet another Number Sequence