zoukankan      html  css  js  c++  java
  • HDU 1575 Tr A

    http://acm.hdu.edu.cn/showproblem.php?pid=1575

    矩阵+快速幂

    A^k是A*A*A...(k个A相乘)

    View Code
    #include <iostream>
    using namespace std ;
    void mul(int a[11][11],int b[11][11],int n)
    {
        int c[11][11] ;
        int i,j,k ;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                c[i][j]=0 ;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                for(k=0;k<n;k++)
                    c[i][j]=(c[i][j]+a[i][k]*b[k][j])%9973 ;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                a[i][j]=c[i][j] ;
    }
    void qpow(int m[11][11],__int64 k,int n)
    {
        int ans[11][11] ;
        int buff[11][11] ;
        int i,j ;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                if(i==j)
                    ans[i][j]=1 ;
                else
                    ans[i][j]=0 ;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                buff[i][j]=m[i][j] ;
        while(k)
        {
            if(k&1)
                mul(ans,buff,n) ;
            mul(buff,buff,n) ;
            k>>=1 ;
        }
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                m[i][j]=ans[i][j] ;
    }
    int main()
    {
        int t ;
        int m[11][11] ;
        scanf("%d",&t) ;
        while(t--)
        {
            int n ;
            __int64 k ;
            scanf("%d%I64d",&n,&k) ;
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    scanf("%d",&m[i][j]) ;
            qpow(m,k,n) ;
            int ans=0 ;
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    if(i==j)
                        ans=(ans+m[i][j])%9973 ;
            printf("%d\n",ans) ;
        }
        return 0 ;
    }
  • 相关阅读:
    多窗体
    滚动条
    个人信息调查
    登录页面
    蓝桥杯——放麦子
    java的BigDecimal
    蓝桥杯——判定字符的位置。
    输出日历
    蓝桥杯---简单的计算器
    蓝桥杯--Quadratic Equation
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2624847.html
Copyright © 2011-2022 走看看