S=A+A2+A4+ +AkS=A+A2+A4+ +Ak(每个元素mod m)" type="text/javascript">
频道栏目
首页 > 资讯 > 其他 > 正文

矩阵快速幂问题解析(模板)

18-05-07        来源:[db:作者]  
收藏   我要投稿

题意:给定一个n*n的矩阵A,求S=A+A2+A4+..+Ak" role="presentation">S=A+A2+A4+..+Ak(每个元素mod m)

题解:矩阵快速幂:
Sk=I+A+A2+A4+..+Ak" role="presentation">Sk=I+A+A2+A4+..+Ak,其中I" role="presentation">I为单位矩阵

#include
#include
#include
#include
using namespace std;
int n,k,m;
struct mat
{
    int a[100][100];
};

mat operator*(const mat &a,const mat &b)
{
    mat ans;
    for(int i=0; i<2*n; i++)
    {
        for(int j=0; j<2*n; j++)
        {
            ans.a[i][j]=0;
            for(int k=0; k<2*n; k++)
            {
                ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j])%m;
            }
        }
    }
    return ans;
}
mat base;
mat qm(int t)
{
    mat ans;
    memset(ans.a,0,sizeof ans.a);
    for(int i=0; i<2*n; i++)
        ans.a[i][i]=1;
    while(t)
    {
        if(t&1)
            ans=ans*base;
        t>>=1;
        base=base*base;
    }
    return ans;

}
int main()
{
    while(scanf("%d%d%d",&n,&k,&m)!=EOF)
    {
        memset(base.a,0,sizeof base.a);
        for(int i=0; i
相关TAG标签
上一篇:Java编程思想之操作符解析
下一篇:DWR的介绍和原理
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站