• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ACM s1124yy
守りたいものが 強くさせること
博客园    首页    新随笔    联系   管理     

矩阵快速幂-模板

矩阵快速幂-模板

&思考:

这个就是可以用来解开m像递推式, 白书P200

&代码:

typedef vector<int> vec;
typedef vector<vec> mat;

mat mul(mat &A,mat& B)
{
	//假设矩阵A是m*n B是n*h 那么C=A*B 是m*h
	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]);
	}
	return C;
}

//求矩阵A的n次方 即A^n
mat bin_pow(mat A,ll n)
{
	//单位矩阵B
	mat B(A.size(),vec(A.size());
	for(int i=0;i<A.size();i++){
		B[i][i]=1;
	}
	while(n>0){
		if(n&1) B=mul(B,A);
		A=mul(A,A);
		n>>=1;
	}
	return B;
}
posted @ 2017-03-19 10:24  s1124yy  阅读(130)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3