您的位置:首页 > 其它

矩阵快速幂

2015-10-15 09:05 357 查看
快速计算递推式
struct Matrix
{
	int F[10][10];
};
inline Matrix Mul(Matrix A,Matrix B)
{
	Matrix C;
	int i,j,k;
	for(i=1;i<=4;i++)
		for(j=1;j<=4;j++)
		{
			C.F[i][j]=0;
			for(k=1;k<=4;k++)
			{
				C.F[i][j]+=(A.F[i][k]*B.F[k][j])%MOD;
				C.F[i][j]%=MOD;
			}
		}
	return C;
}
inline Matrix POW(Matrix A,int n)
{
	Matrix ret,temp;temp=A;
	for(int i=1;i<=4;i++)
		for(int j=1;j<=4;j++)
			ret.F[i][j]=0;
	for(int i=1;i<=4;i++)
		ret.F[i][i]=1; 
	while(n)
	{
		if(n&1) ret=Mul(ret,temp);
		temp=Mul(temp,temp);
		n>>=1;
	}
	return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: