设为首页 加入收藏

TOP

矩阵乘法(二):利用矩阵快速幂运算完成递推(四)
2019-09-04 00:57:32 】 浏览:131
Tags:矩阵 乘法 利用 快速 运算 完成
nbsp;     int mat[110][110];
};

Matrix matMul(Matrix a ,Matrix b,int n)
{
      Matrix c;
      memset(c.mat,0,sizeof(c.mat));
      int i,j,k;
      for (k = 1; k<=n ; k++)
          for (i=1 ;i<=n ; i++)
              if(a.mat[i][k])
                   for (j = 1 ;j<=n ;j++)
                      c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MODNUM;
      return c;
}
Matrix quickMatPow(Matrix a ,int b ,int n) // n阶矩阵a快速b次幂
{
      Matrix c;
      memset(c.mat ,0 ,sizeof(c.mat));
      int i;
      for (i = 1 ;i <= n ;i++)
          c.mat[i][i] = 1;
      while(b)
      {
            if (b & 1)
                c = matMul(c ,a ,n); // c=c*a;
            a = matMul(a ,a ,n); // a=a*a
            b /= 2;
      }
      return c;
}
int main()
{
      int k,n,i,sum;
      int a[110] ,b[110]; 
      Matrix start ,ans;
      while (scanf("%d" ,&k) && k!=0)
      {
            for (i = 0 ;i < k ;i ++)
                 scanf("%d" ,&a[i]);
            for (i = 1 ;i <=k ;i ++)
                 scanf("%d" ,&b[i]);
            scanf("%d" ,&n);
            if (n<k)
            {
                 printf("%d\n" ,a[n]);
                 continue;
            }
            memset(start.mat ,0 ,sizeof(start.mat));
            for (i = 1 ;i < k ;i ++)
                 start.mat[i][i+1] = 1;
            for (i = 1 ;i <= k ;i ++)
                 start.mat[k][i] = b[k-i+1];
            ans = quickMatPow(start ,n-k+1,k);
            sum = 0;
            for(i = 1 ;i <= k ;i++)
                  sum = (sum + a[i-1] * ans.mat[k][i]) % MODNUM;
            printf("%d\n" ,sum);
      }
      return 0;
}

【例4】简单定义的函数F(x)。 

       设函数f(x)的定义如下:

              f(x) = x    (x < 10)

              f(x) = a0 * f(x-1) + a1 * f(x-2) + …… + a9 * f(x-10)   (x >= 10)  

                                             其中,ai(

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇矩阵乘法(一):基本运算 下一篇洛谷 CF448D Multiplication Table

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目