zoukankan      html  css  js  c++  java
  • 矩阵快速幂

    模板

    ll mod;
    const int maxMat=5;
    struct Mat{
    	int n,m;
    	ll v[maxMat][maxMat];
    	Mat(int n,int m):n(n),m(m){
    		init();
    	}
    	void init(){
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=m;j++)
    				v[i][j]=0;
    	}
    	Mat operator*(Mat &b)const{
    		Mat c(n,b.m);
    		c.init();
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=b.m;j++)
    				for(int k=1;k<=m;k++){
    					c.v[i][j]+=v[i][k]*b.v[k][j];
    					c.v[i][j]%=mod;//koko
    				}
    		return c;
    	}
    	void print(){
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<=m;j++)
    				cout<<v[i][j]<<" ";
    			cout<<endl;
    		}
    	}
    };
    Mat unit(maxMat-1,maxMat-1);
    void init(){
    	memset(unit.v,0,sizeof(unit.v));
    	for(int i=1;i<=maxMat-1;i++)
    		unit.v[i][i]=1;
    }
    Mat fp(Mat a,ll n){
    	Mat res=unit;
    	res.n=res.m=a.n;
    	while(n){
    		if(n&1)
    			res=res*a;
    		a=a*a;
    		n>>=1;
    	}
    	return res;
    }
    

    常用递推式

    img

  • 相关阅读:
    js38---门面模式
    js37---Function.prototype
    js36---函数嵌套
    js35
    js34
    js33--责任链模式
    js32---CommonUtil.js
    龙芯服务器参数
    SQLSERVER 秘钥整理
    IOMETER的简单使用
  • 原文地址:https://www.cnblogs.com/ucprer/p/13822186.html
Copyright © 2011-2022 走看看