矩阵乘的优先级问题

Miemeng发现的问题

 这个用嘴说不清楚~~

上码!

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #define N 222
 5 using namespace std;
 6 const int Mod=2009;
 7 struct JZ{
 8     int lines,cols;
 9     int A[N][N];
10     JZ(){
11         lines=cols=0;
12         memset(A,0,sizeof A);
13     }
14     void set_JZ(int l,int c){
15         lines=l,cols=c;
16     }
17     void out(){
18         for (int i=1;i<=lines;i++){
19             for (int j=1;j<=cols;j++){
20                 printf("%d ",A[i][j]);
21             }
22             puts("");
23         }
24     }
25 };JZ a,b;
26 int n,tim;
27 JZ operator * (JZ a,JZ b){
28     JZ c;
29     c.lines=min(a.lines,b.lines),c.cols=min(a.cols,b.cols);
30     int len=a.lines+b.lines-c.lines;
31     for (int i=1;i<=c.lines;i++){
32         for (int j=1;j<=c.cols;j++){
33             for (int k=1;k<=len;k++){
34                 c.A[i][j]+=a.A[i][k]*b.A[k][j];
35                 c.A[i][j]%=Mod;
36             }
37         }
38     }
39     return c;
40 }
41 JZ ppow(JZ a,int b){
42     JZ ans;ans.set_JZ(9*n,9*n);
43     for (int i=0;i<9*n;i++){
44         ans.A[i][i]=1;
45     }
46     while(b){
47         if(b&1)ans=ans*a;
48         a=a*a;
49         b>>=1;
50     }
51     return ans;
52 }
53 inline bool ian(const char ch){
54     if(ch>='0'&&ch<='9')return 1;
55     return 0;
56 }
57 char st[22];
58 int main(){
59     (a.in()*b*in()).out();
60     a.in(),b.in(),(a*b).out();//这里两行输出不同QAQ
61     return 0;
62 }

事实上:(Updated)

它仿佛会先输入b,再输入a,从而使用了矩阵中不成立的交换律。呜呜呜~~~

不是我调出来的~~

没了

 

posted @ 2019-07-18 21:06 imcate 阅读(...) 评论(...) 编辑 收藏