trang chủ / bài tập / unusprod

Tích Lạ

Đề bài

Mô tả

Cho ma trận nhị phân A kích thước n×n (mỗi phần tử là 0 hoặc 1). Mọi phép tính ở bài này được thực hiện trên GF(2), tức là cộng và nhân đều lấy modulo 2.

Định nghĩa tích lạ của ma trận A là tổng (theo GF(2)) của n tích vô hướng: tích vô hướng thứ i là tích vô hướng giữa hàng thứ i và cột thứ i của A. Cụ thể:

tích lạ(A)=i=1nj=1nai,j·aj,i(mod2).

Cho ma trận A ban đầu, bạn cần xử lý q truy vấn, mỗi truy vấn thuộc một trong ba loại:

  • 1 i — đảo bit toàn bộ hàng thứ i (mỗi ai,j trở thành 1ai,j).
  • 2 i — đảo bit toàn bộ cột thứ i.
  • 3 — in ra giá trị tích lạ của A tại thời điểm hiện tại.

Gọi m là số truy vấn loại 3. Hãy in ra một xâu duy nhất gồm m kí tự, kí tự thứ i là kết quả của truy vấn loại 3 thứ i (theo đúng thứ tự xuất hiện trong dữ liệu vào).

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n — kích thước ma trận.
  • n dòng tiếp theo, dòng thứ i chứa n số nguyên ai,1,ai,2,,ai,n cách nhau bởi dấu cách.
  • Dòng tiếp theo chứa số nguyên q — số truy vấn.
  • q dòng tiếp theo mô tả các truy vấn theo định dạng ở trên.

Dữ liệu ra

In ra một xâu nhị phân duy nhất, mỗi kí tự là kết quả của một truy vấn loại 3 theo thứ tự xuất hiện. Nếu không có truy vấn loại 3 nào thì không in gì cả.

Ràng buộc

  • 1n1000
  • 1q106
  • ai,j{0,1}
  • Với mọi truy vấn loại 1 hoặc 2: 1in.

Lưu ý: do dữ liệu vào và dữ liệu ra có thể rất lớn, nên dùng các phương thức nhập xuất nhanh (ví dụ tránh cin/cout trong C++).

Ví dụ

Input Output Giải thích
3
1 1 1
0 1 1
1 0 0
12
3
2 3
3
2 2
2 2
1 3
3
3
1 2
2 1
1 1
3
01001 5 truy vấn loại 3. Tích lạ ban đầu bằng 0. Sau khi đảo cột 3, tích lạ thành 1. Sau hai lần đảo cột 2 (không đổi) rồi đảo hàng 3, tích lạ thành 0. Hai truy vấn cuối cùng cho ra 01.
2
0 1
1 0
1
3
0 Tích lạ =a1,1·a1,1+a1,2·a2,1+a2,1·a1,2+a2,2·a2,2=0+1+1+0=0(mod2).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0