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