Sliding Window Or

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài

Cho một mảng gồm ~n~ số nguyên ~x_1, x_2, \dots, x_n~. Nhiệm vụ là tính OR bit của từng cửa sổ liên tiếp độ dài ~k~ từ trái sang phải.

Trong bài này dữ liệu vào rất lớn và được tạo bởi một bộ sinh.

Yêu cầu

Với mỗi ~i~ từ ~1~ đến ~n-k+1~, xét cửa sổ:

  • ~[x_i, x_{i+1}, \dots, x_{i+k-1}]~

Gọi:

  • ~W_i = x_i \, \mathrm{or} \, x_{i+1} \, \mathrm{or} \, \dots \, \mathrm{or} \, x_{i+k-1}~

Hãy in ra:

  • ~W_1 \oplus W_2 \oplus \dots \oplus W_{n-k+1}~

Trong đó:

  • ~\mathrm{or}~ là phép OR bit
  • ~\oplus~ là phép XOR bit

Dữ liệu

  • Dòng ~1~: hai số nguyên ~n~, ~k~.
  • Dòng ~2~: bốn số nguyên ~x~, ~a~, ~b~, ~c~ mô tả bộ sinh:
    • ~x_1 = x~
    • ~x_i = (a \cdot x_{i-1} + b) \bmod c~ với ~i = 2,3,\dots,n~

Kết quả

  • In ra một số nguyên: ~W_1 \oplus W_2 \oplus \dots \oplus W_{n-k+1}~.

Ví dụ

Ví dụ 1

Input

8 5
3 7 1 11

Output

4

Giải thích

Ví dụ 1

Dãy sinh ra là ~[3,0,1,8,2,4,7,6]~.

Các cửa sổ độ dài ~5~ có OR lần lượt:

  • ~3~ ~\mathrm{or}~ ~0~ ~\mathrm{or}~ ~1~ ~\mathrm{or}~ ~8~ ~\mathrm{or}~ ~2 = 11~
  • ~0~ ~\mathrm{or}~ ~1~ ~\mathrm{or}~ ~8~ ~\mathrm{or}~ ~2~ ~\mathrm{or}~ ~4 = 15~
  • ~1~ ~\mathrm{or}~ ~8~ ~\mathrm{or}~ ~2~ ~\mathrm{or}~ ~4~ ~\mathrm{or}~ ~7 = 15~
  • ~8~ ~\mathrm{or}~ ~2~ ~\mathrm{or}~ ~4~ ~\mathrm{or}~ ~7~ ~\mathrm{or}~ ~6 = 15~

Vì vậy:

  • ~11 \oplus 15 \oplus 15 \oplus 15 = 4~

Ràng buộc và chấm điểm

Ràng buộc
  • ~1 \le k \le n \le 10^7~
  • ~0 \le x,a,b \le 10^9~
  • ~1 \le c \le 10^9~

Bình luận

Hãy đọc nội quy trước khi bình luận.


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