2015年普级组模拟试题 小X的矩阵

Description

小X最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G。对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余之后的结果。举一个例子: 

这里写图片描述

对于上图这个3*3矩阵A,G(A)=(1*1+1*0+1*1+0*1+1*1+1*0+1*1+ 0*1+0*0) mod 2=0 
当然询问一个矩阵的G值实在是太简单了。小X在给出一个N*N矩阵的同时将给你Q个操作,操作描述如下: 
操作1:形如一个整数1和一个整数x,表示将第x行的元素全部“翻转”。 
操作2:形如一个整数2和一个整数x,表示将第x列的元素全部“翻转”。 
操作3:形如一个整数3,表示询问当前矩阵的特征值G。 
“翻转”的定义为将1变成0,将0变成1。 

Input

第1行:两个正整数N,Q。   N表示矩阵的行数(列数),Q表示询问的个数。 
接下来N行:一个N*N的矩阵A,0<=A[i][j]<=1。 
接下来Q行:Q个操作。

Output

一行若干个数,中间没有空格,分别表示每个操作的结果(操作1和操作2不需要输出)。

Sample Input

3 12
1 1 1
0 1 1
1 0 0
3
2 3
3
2 2
2 2
1 3
3
3
1 2
2 1
1 1
3

Sample Output

01001

题解

简单的规律

代码

var
  n,q,g:longint;
procedure init;
var
  i,j,x:longint;
begin
  readln(n,q);
  g:=0;
  for i:=1 to n do
    for j:=1 to n do
      begin
        read(x);
        if i=j then g:=g xor x;
      end;
end;

procedure main;
var
  i,x:longint;
begin
  for i:=1 to q do
    begin
      read(x);
      if x=3 then write(g) else
        begin
          readln(x);
          if g=0 then g:=1
                 else g:=0;
        end;
    end;
end;

begin
  init;
  main;
end.
原文地址:https://www.cnblogs.com/zyx-crying/p/9319547.html