zoukankan      html  css  js  c++  java
  • 矩阵二分乘法(可做模板)——hdu1575

    View Code
    #include<stdio.h>
    #include
    <string.h>

    constint mod=9973;//矩阵中间数求模
    int n;

    struct data
    {
    int map[19][19];
    };

    data matrix(data a,data b)
    //矩阵乘法
    {
    int i,j,k;
    data re;
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
    int all=0;
    for(k=0;k<n;k++)
    {
    all
    +=(a.map[i][k]*b.map[k][j])%mod;
    all
    %=mod;
    }
    re.map[i][j]
    =all%mod;
    }
    }
    return re;
    }

    int matrixT(data f,int p)//二分求矩阵
    {
    int i,j;
    data all;
    for(i=0;i<n;i++){//初始化一个单位矩阵
    for(j=0;j<n;j++){
    all.map[i][j]
    =0;
    if(i==j)all.map[i][j]=1;
    }
    }

    while(p>0)//二分求矩阵
    {
    if(p&1==1)
    {all
    =matrix(all,f);}

    f
    =matrix(f,f);
    p
    >>=1;
    }

    int add=0;//计算矩阵对角线和
    for(i=0;i<n;i++){
    add
    +=all.map[i][i];
    }

    return add%mod;
    }

    int main()
    {
    int p;
    int t;
    while(scanf("%d",&t)!=EOF)
    {
    while(t--)
    {

    scanf(
    "%d%d",&n,&p);
    int i,j;
    data f;
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
    int temp;
    scanf(
    "%d",&temp);
    f.map[i][j]
    =temp;
    }
    }

    printf(
    "%d\n",matrixT(f,p));

    }
    }
    return0;
    }

      

  • 相关阅读:
    LTE
    LTE
    LTE
    LTE
    LTE DL-SCH and PDSCH Processing Chain
    LTE PDSCH Port 5 UE-Specific Beamforming
    推荐我的公众号
    GitHub Top 微信小程序
    深度前馈网络
    考研经历吐血总结
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2115910.html
Copyright © 2011-2022 走看看