码迷,mamicode.com
首页 > 其他好文 > 详细

矩阵求幂

时间:2018-08-25 14:10:35      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:mat   ems   mes   output   nbsp   span   struct   ons   double   

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define rep(i,a,b) for(int i=a;i<=b;++i)
 4 #define ms(arr,a) memset(arr,a,sizeof arr)
 5 #define debug(x) cout<<"< "#x" = "<<x<<" >"<<endl
 6 #define sd(x) scanf("%d",&x)
 7 #define slf(x) scanf("%lf",&x)
 8 #define pn printf("\n")
 9 const int maxn=1e2+5;
10 struct Matrix
11 {
12     int n;
13     double rec[maxn][maxn];
14     Matrix(){n=0;ms(rec,0);}
15     Matrix(int x){n=x;ms(rec,0);}
16     Matrix(int x,int k)
17     {
18         n=x;
19         ms(rec,0);
20         rep(i,1,n)rec[i][i]=k;
21     }
22     Matrix operator *(const Matrix b)const
23     {
24         Matrix ret(n);
25         rep(i,1,n)
26             rep(j,1,n)
27                 rep(k,1,n)
28                     ret.rec[i][j]+=rec[i][k]*b.rec[k][j];
29         return ret;
30     }
31 };
32 Matrix Pow(Matrix a,int n)
33 {
34     Matrix ret(a.n,1);
35     while(n)
36     {
37         if(n&1)ret=ret*a;
38         a=a*a;
39         n>>=1;
40     }
41     return ret;
42 }
43 int main()
44 {
45     freopen("Input.txt","r",stdin);
46     //freopen("Output.txt","w",stdout);
47     //printf("Matrix size:");
48     Matrix a;
49     sd(a.n);
50     rep(i,1,a.n)
51         rep(j,1,a.n)
52             slf(a.rec[i][j]);
53     //printf("Pow:");
54     int N;
55     while(~sd(N))
56     {
57         a=Pow(a,N);
58         rep(i,1,a.n)
59         {
60             rep(j,1,a.n)
61                 printf("%lf ",a.rec[i][j]);
62             pn;
63         }
64         pn;
65     }
66     //freopen("CON","w",stdout);
67     //system("start Output.txt");
68 }

 

矩阵求幂

标签:mat   ems   mes   output   nbsp   span   struct   ons   double   

原文地址:https://www.cnblogs.com/maoruimas/p/9533230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!