POJ 3734 wata 的快速幂 模板。
2014-03-19 23:14
357 查看
对于递推。我们可以用矩阵来解决问题,尤其是对于求 第100000000项式多少这种问题时,其实看到数字就应该想到要矩阵了。。
首先是构造矩阵,构造矩阵的方法。。。各种途径都有。。没图不好说。。
反正呢。。
首先是一个目标列向量,然后还有一个原来的列向量。
然后根据递推方程 构造一个 n x n 矩阵
矩阵的数字要看递推方程如果根据上一项得到下一项。
首先是构造矩阵,构造矩阵的方法。。。各种途径都有。。没图不好说。。
反正呢。。
首先是一个目标列向量,然后还有一个原来的列向量。
然后根据递推方程 构造一个 n x n 矩阵
矩阵的数字要看递推方程如果根据上一项得到下一项。
#include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #include <map> #include <vector> #include <cmath> #include <string.h> #include <stdlib.h> #include <time.h> #include <fstream> #include <set> #include <stack> using namespace std; #define READ freopen("acm.in","r",stdin) #define WRITE freopen("acm.out","w",stdout) #define ll long long #define ull unsigned long long #define PII pair<int,int> #define PDI pair<double,int> #define PDD pair<double,double> #define MII map<int,int>::iterator #define fst first #define sec second #define MS(x,d) memset(x,d,sizeof(x)) #define INF 0x3f3f3f3f #define ALL(x) x.begin(),x.end() #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define ROOT 0,n-1,1 #define PB push_back #define FOR(a,b,c) for(int a=b;a<c;a++) #define MOD 10007 #define keyTree (ch[ ch[root][1] ][0]) #define MAX 200 #define SIG 128 typedef vector<int> vec; typedef vector<vec> mat; mat mul(mat &A,mat &B) { mat C(A.size(),vec(B[0].size())); for(int i=0;i<A.size();i++) { for(int k=0;k<B.size();k++) { for(int j=0;j<B[0].size();j++) C[i][j]=(C[i][j]+A[i][k]*B[k][j])%MOD; } } return C; } mat pow(mat A,int n) { mat B(A.size(),vec(A.size())); for(int i=0;i<A.size();i++) B[i][i]=1; while(n) { if(n&1) B=mul(B,A); A=mul(A,A); n>>=1; } return B; } int solve(int n) { mat A(3,vec(3));// 几行 几列 A[0][0]=2,A[0][1]=1,A[0][2]=0; A[1][0]=2,A[1][1]=2,A[1][2]=2; A[2][0]=0,A[2][1]=1,A[2][2]=2; A=pow(A,n); return A[0][0]; } int main() { int cas; scanf("%d",&cas); //B[0][0]=1,B[0][1]=0,B[0][2]=0; while(cas--) { int n; cin>>n; cout<<solve(n)<<endl; } return 0; }
相关文章推荐
- poj 3734 矩阵快速幂模板清晰版
- POJ - 3734 Blocks 矩阵的快速幂
- POJ 3041 Asteroids(模板——二分最大匹配(BFS增广))
- B - 雲に潜む一つ眼の化生 POJ - 1986 LCA->RMQ模板【下标从1开始】
- POJ - 3461 Oulipo(KMP模板题)
- poj--2631--Roads in the North(树的直径 裸模板)
- POJ_3734_母函数
- poj 2104 and hdu 2665 划分树模板入门题
- POJ 2438 Children's Dining (求哈密顿回路模板)
- POJ 3734 Blocks【用母函数推公式|矩阵乘法】
- 主席树模板 【poj2104】K-th Number
- POJ 1200 Crazy Search(哈希算法)【模板】
- 最小生成树,POJ和HDU几道题目的解题报告(基于自己的模板)
- poj 1146 ID Codes (字符串处理 生成排列组合 生成当前串的下一个字典序排列 【*模板】 )
- POJ 2524 宗教信仰 并查集 基础模板
- POJ 2417 Discrete Logging bsgs算法模板题
- POJ 2914 无向图的最小割,模板题。
- POJ 3164 Command Network(最小树形图模板题+详解)
- POJ-1251 Jungle Roads 最小生成树 两种算法的简单模板
- POJ 3734 Blocks 笔记