1 2 3 4 | for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) t[j]=(t[j]+x[k]*y[k][j]); |
1 2 3 4 | for(int i=0;i<n;i++) for(int k=0;k<n;k++) for(int j=0;j<n;j++) t[j]=(t[j]+x[k]*y[k][j]); |
1 2 3 4 5 | for(int i=0;i<n;i++) for(int k=0;k<n;k++) if(x[k]) //优化步骤 for(int j=0;j<n;j++) t[j]=(t[j]+x[k]*y[k][j]) |
1 2 3 4 5 | for(int j=0;j<n;j++) for(int k=0;k<n;k++) if(y[k][j]) //优化 for(int i=0;i<n;i++) t[j]=(t[j]+x[k]*y[k][j]); |
1 2 3 4 5 6 7 8 9 10 11 12 | void Matmul(LLX[MAXN][MAXN],LL Y[MAXN][MAXN]) { LL t[MAXN][MAXN]={0}; for(int i=0;i<N;i++) for(int k=0;k<N;k++) if(X[k]) for(int j=0;j<N;j++) t[j]=(t[j]+X[k]*Y[k][j]); for(int i=0;i<N;i++) for(int j=0;j<N;j++) X[j]=t[j]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int MAXN = 810; const int Modn = 3; int N; int X[MAXN][MAXN]; int Y[MAXN][MAXN]; int t[MAXN][MAXN]; int main() { while(scanf("%d",&N)!=EOF){ for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ scanf("%d",&X[j]); X[j]%=3; } } for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ scanf("%d",&Y[j]); Y[j]%=3; t[j]=0; } } for(int i=0;i<N;i++){ for(int k=0;k<N;k++) if(X[k]) for(intj=0;j<N;j++) t[j]=(t[j]+X[k]*Y[k][j]%3)%3; } for(int i=0;i<N;i++){ printf("%d",t[0]); for(int j=1;j<N;j++){ printf("%d",t[j]); } printf("\n"); } } return 0; } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |