Bài toán khởi động cửa sổ trượt
Xem dạng PDFBạn được cho một mảng gồm n số nguyên. Nhiệm vụ của bạn là tính tổng của mỗi cửa sổ con (window) gồm k phần tử, duyệt từ trái sang phải.
Trong bài này, dữ liệu đầu vào rất lớn và được tạo ra bằng một bộ sinh tự động.
Đầu vào :
Dòng đầu tiên chứa hai số nguyên ~n~ và ~k~:
- ~n~ là số phần tử của mảng
- ~k~ là kích thước của mỗi cửa sổ (window)
Dòng thứ hai chứa bốn số nguyên ~x~, ~a~, ~b~, ~c~: là tham số của bộ sinh dữ liệu đầu vào. Mảng đầu vào được sinh theo công thức:
~x₁ = x~
xᵢ = (a * ~x_{i-1}~ + b) mod c với i = 2, 3, ..., n
Đầu ra:
In ra giá trị XOR của tất cả các tổng cửa sổ độ dài k.
Ràng buộc:
~1 ≤ k ≤ n ≤ 10⁷~
~0 ≤ x, a, b ≤ 10⁹~
~1 ≤ c ≤ 10⁹~
Ví dụ :
Input:
8 5
3 7 1 11
Output:
12
Giải thích: Dãy được tạo ra là: [3, 0, 1, 8, 2, 4, 7, 6]
Các cửa sổ độ dài 5 là: [3, 0, 1, 8, 2] → tổng = 14 [0, 1, 8, 2, 4] → tổng = 15 [1, 8, 2, 4, 7] → tổng = 22 [8, 2, 4, 7, 6] → tổng = 27
XOR của các tổng: 14 ⊕ 15 ⊕ 22 ⊕ 27 = 12
Bình luận