hdu 1575Tr A
生活随笔
收集整理的這篇文章主要介紹了
hdu 1575Tr A
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Tr A
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6348????Accepted Submission(s): 4707
Problem Description A為一個方陣,則Tr A表示A的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。
Input 數據的第一行是一個T,表示有T組數據。
每組數據的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)兩個數據。接下來有n行,每行有n個數據,每個數據的范圍是[0,9],表示方陣A的內容。
Output 對應每組數據,輸出Tr(A^k)%9973。
Sample Input 2 2 2 1 0 0 1 3 99999999 1 2 3 4 5 6 7 8 9
Sample Output 2 2686
Author xhd
Source HDU 2007-1 Programming Contest
Recommend
linle???|???We have carefully selected several similar problems for you:??1757?1588?2256?2604?2254?
#include <iostream> #include <cstdio> #include <cstring> //#include <bits/stdc++.h> using namespace std; int n; long long k,mod=9973; struct matrix {long long x[15][15]; }a,e; void init() {memset(e.x,0,sizeof(e.x));for(int i=0;i<n;++i)e.x[i][i]=1; } matrix POw(matrix xx,matrix yy) {matrix sum;memset(sum.x,0,sizeof(sum.x));for(int i=0;i<n;++i){for(int j=0;j<n;++j){for(int k=0;k<n;++k){if(xx.x[i][k]&&yy.x[k][j])sum.x[i][j]+=(xx.x[i][k]%mod*yy.x[k][j]%mod)%mod;//sum.x[i][j]+=((xx.x[i][k]%mod)*yy.x[k][j]%mod)%mod;}}}return sum; } void martix_pow(long long k) {init();while(k){if(k&1){e=POw(e,a);}a=POw(a,a);k>>=1;}/* for(int i=0;i<n;++i){for(int j=0;j<n;++j)cout<<e.x[i][j]<<' ';cout<<endl;}*/long long ans=0;for(int i=0;i<n;++i)ans+=e.x[i][i]%mod;cout<<(ans%mod)<<endl; } int main() {int t;//freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);cin>>t;while(t--){cin>>n>>k;for(int i=0;i<n;++i)for(int j=0;j<n;++j){scanf("%d",&a.x[i][j]);}martix_pow(k);//<<endl;}return 0; }總結
以上是生活随笔為你收集整理的hdu 1575Tr A的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj 2553 The Bottom
- 下一篇: hdu A Simple Math Pr