矩陣十題【二】 poj 1575 Tr A 【矩陣】

來源:互聯網
上載者:User

標籤:矩陣快速冪

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1575

題目大意:A為一個方陣,則Tr A表示A的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。

資料的第一行是一個T,表示有T組資料。
每組資料的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是[0,9],表示方陣A的內容。

一個矩陣快速冪的裸題。

題解:

#include<iostream>#include<stdio.h>#include<cstring>#define Mod 9973using namespace std;const int MAX = 11;struct Matrix{    int v[MAX][MAX];};int n, k, M;Matrix mtMul(Matrix A, Matrix B)        // 求矩陣 A * B{    int i, j, k;    Matrix C;    for(i = 0; i < n; i ++)        for(j = 0; j < n; j ++)        {            C.v[i][j] = 0;            for(k = 0; k < n; k ++)                C.v[i][j] = (A.v[i][k] * B.v[k][j] + C.v[i][j]) % Mod;        }    return C;}Matrix mtPow(Matrix A, int k)           // 求矩陣 A ^ k{    if(k == 0)    {        memset(A.v, 0, sizeof(A.v));        for(int i = 0; i < n; i ++)            A.v[i][i] = 1;        return A;    }    if(k == 1) return A;    Matrix C = mtPow(A, k / 2);    if(k % 2 == 0)        return mtMul(C, C);    else        return mtMul(mtMul(C, C), A);}int solv (Matrix A){    int ans=0;    for(int i=0;i<n;i++)    ans+=A.v[i][i]%Mod;    return ans;}void out(Matrix A){    for(int i=0;i<n;i++)    {        for(int j=0;j<n;j++)        printf("%d ",A.v[i][j]);        cout<<endl;    }}int main (){    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&n,&k);        Matrix A;        for(int i=0;i<n;i++)         for(int j=0;j<n;j++)         scanf("%d",&A.v[i][j]);        Matrix ans;        ans=mtPow(A,k);        //out(ans);        cout<<solv(ans)%Mod<<endl;    }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.