题意:给你n*n的矩阵,里面是1或0,然后q次询问,如果操作数为1,那么就把x行的数0变成1,1变成0;如果操作数为2,那么在x列上的数0变成1,1变成0;如果是3,输出;
思路:在求的时候,对角线上的数是自己乘自己,其他位置上的数都是相乘两次,最后其他位置上的数求得值都为0,当改变每一行或者每一列其它位置上不用管,只是对角线上的有个数改变了,那么最后的值异或1就可以。
1 #include2 #include 3 #include 4 using namespace std; 5 6 int c[1010][1010]; 7 int n,q; 8 int ans[10000010]; 9 10 11 int main()12 {13 int x;14 scanf("%d",&n);15 int ans1=0;16 for(int i=1; i<=n; i++)17 {18 for(int j=1; j<=n; j++)19 {20 scanf("%d",&x);21 if(i==j) ans1^=x;22 }23 }24 int cnt=0;25 scanf("%d",&q);26 for(int i=1; i<=q; i++)27 {28 int op;29 scanf("%d",&op);30 if(op==3)31 {32 ans[cnt++]=ans1;33 }34 else35 {36 scanf("%d",&x);37 ans1^=1;38 }39 }40 for(int i=0; i