zoukankan      html  css  js  c++  java
  • Tr A

    题目描述:

    A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。

    输入:

    数据的第一行是一个T,表示有T组数据。
    每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。

    输出:

    对应每组数据,输出Tr(A^k)%9973。

    样例输入:
    2
    2 2
    1 0
    0 1
    3 99999999
    1 2 3
    4 5 6
    7 8 9
    样例输出:
    2
    2686

    #include<stdio.h>
    typedef struct matrix
    {
        int m[15][15];
    }matrix;
    matrix mul(matrix x,matrix y,int n)
    {
        matrix ans;
        for(int i=0;i<n;++i)
        {
            for(int j=0;j<n;++j)
            {
                ans.m[i][j]=0;
                for(int k=0;k<n;++k)
                {
                    ans.m[i][j]+=x.m[i][k]*y.m[k][j]%9973;
                    ans.m[i][j]%=9973;
                }
            }
        }
        return ans;
    }
    int main()
    {
        int n,t;
        long long k;
        matrix ans,y;
        //freopen("in.txt","r",stdin);
        while(~scanf("%d",&t))
        {
    
            while(t--)
            {
                scanf("%d %lld",&n,&k);
                for(int i=0;i<n;++i)
                    for(int j=0;j<n;++j)
                    {
                        ans.m[i][j]=(i==j?1:0);
                        scanf("%d",&y.m[i][j]);
                    }
                while(k!=0)
                {//将k转为2进制,从最低位开始算起
                    if(k%2==1)//二进制该位为1,则累乘至ans
                    {
                        ans=mul(ans,y,n);
                    }
                    k/=2;//右移1位
                    y=mul(y,y,n);//计算下一位的权值
                }
                int sum=0;
                for(int i=0;i<n;++i)
                {
                        sum+=ans.m[i][i];
                        sum%=9973;
                }
                printf("%d\n",sum);
            }
        }
        return 0;
    }
  • 相关阅读:
    SpringBoot详解(二)——
    SpringBoot详解(一)——
    数据库三大范式
    Mysql备份
    mysql索引
    mysql事务
    几种数据库查找的案例
    点击加载更多
    layer、弹出框
    验证码倒计时
  • 原文地址:https://www.cnblogs.com/aboutblank/p/2957180.html
Copyright © 2011-2022 走看看