Toán tử bit

Xem PDF

Nộp bài


Điểm: 20 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Cho trước giá trị \(C\) và \(N\) thao tác bit, thao tác thứ \(i\) có dạng \(T \ A\), trong đó:

  • \(T=1\) biểu thị cho phép gán \(M = M \ \text{and} \ A\).
  • \(T=2\) biểu thị cho phép gán \(M = M \ \text{or} \ A\).
  • \(T=3\) biểu thị cho phép gán \(M = M \ \text{xor} \ A\).

Đức có một biến số nguyên \(X\). Ban đầu, Đức gán \(X=C\) và tiến hành \(N\) bước tính toán:

  • Bước \(1\): Áp dụng thao tác bit thứ \(1\) lên \(X\). Sau đó, in giá trị của \(X\) lên màn hình.
  • Bước \(2\): Lần lượt áp dụng thao tác bit thứ \(1\) và thứ \(2\) lên \(X\). Sau đó, in giá trị của \(X\) lên màn hình.
  • Bước \(3\): Lần lượt áp dụng thao tác bit thứ \(1\), thứ \(2\), và thứ \(3\) lên \(X\). Sau đó, in giá trị của \(X\) lên màn hình.
  • ...
  • Bước \(N\): Lần lượt áp dụng thao tác bit thứ \(1\), thứ \(2\), thứ \(3\),..., thứ \(N\) lên \(X\). Sau đó, in giá trị của \(X\) lên màn hình.

Bạn hãy giúp Đức viết chương trình thực hiện \(N\) bước tính toán trên nhé!

Input
  • Dòng đầu chứa hai số nguyên \(N\) và \(C\) \(\left(1\le N\le 2\times 10^5, 0\le C < 2^{30}\right)\).
  • Dòng thứ \(i\) trong \(N\) dòng tiếp theo có dạng \(1 \ A_i\), \(2 \ A_i\), hoặc \(3 \ A_i\) thể hiện thao tác bit thứ \(i\) \(\left(0\le A_i < 2^{30} \right)\).
Output
  • In ra \(N\) dòng là kết quả của \(N\) bước tính toán.
Ví dụ
Sample input 01
3 19
3 10
2 13
1 6
Sample output 01
25
31
4
Giải thích
  • Giá trị khởi tạo của \(X\) là 19.
  • Tiếp theo, thao tác bit thứ \(1\) gán \(X\) thành \(25\).
  • Tiếp theo, thao tác bit thứ \(1\) gán \(X\) thành \(19\), thao tác bit thứ \(2\) gán \(X\) thành \(31\).
  • Tiếp theo, thao tác bit thứ \(1\) gán \(X\) thành \(21\), thao tác bit thứ \(2\) gán \(X\) thành \(29\), thao tác bit thứ \(3\) gán \(X\) thành \(4\).