标签:struct void ios 输入格式 printf pac using nbsp opera
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <cmath> #include <queue> #include <deque> #include <cmath> #include <map> using namespace std; typedef long long ll; #define INF 0x7fffffff const double inf=1e20; const int maxn=1000+10; const int mod=1e7; const double pi=acos(-1); const int N=40,M=40; struct matrix{ int n,m; long long a[N][M]; matrix(){// 初始化2*2的单位矩阵 n=m=40; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ a[i][j]=0; } } for(int i=0;i<n;i++){ a[i][i]=1; } } void clear(int n_){ n=m=n_; //memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ a[i][j]=0; //if(i==j)a[i][j]=1; } } } void clear1(int n_){ n=m=n_; //memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ a[i][j]=0; if(i==j)a[i][j]=1; } } } matrix operator+(const matrix &b)const{ matrix tmp; tmp.clear(b.n); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ tmp.a[i][j]=a[i][j]+b.a[i][j]; } } return tmp; } matrix operator*(const matrix &b)const{ matrix tmp; tmp.clear(b.n); for(int i=0;i<n;i++){ for(int j=0;j<b.m;j++){ for(int k=0;k<m;k++){ tmp.a[i][j]=((a[i][k]*b.a[k][j])+tmp.a[i][j]); } } } return tmp; } }; matrix pow2(matrix A,int n){ matrix B; int nn=A.n; B.clear1(nn); while(n>0){ if(n&1)B=B*A; A=A*A; n/=2; } return B; } int main(){ matrix a,b; int n,m; scanf("%d%d",&n,&m); a.clear1(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%lld",&a.a[i][j]); } } b=pow2(a,m); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%lld ",b.a[i][j]); } printf("\n"); } return 0; }
标签:struct void ios 输入格式 printf pac using nbsp opera
原文地址:https://www.cnblogs.com/wz-archer/p/12507570.html