Cho K số hạng đầu và K hệ số 32-bit. Các số hạng tiếp theo được tạo bằng phép AND theo hệ số rồi XOR các kết quả. Hãy tính số hạng thứ M.
Input
- Dòng đầu chứa K M.
- Dòng hai chứa A1,…,AK.
- Dòng ba chứa C1,…,CK.
- Với i>K: Ai=(C1ANDA(i−1))XOR⋯XOR(CKANDA(i−K)).
Output
- In AM dưới dạng số nguyên không dấu 32-bit.
Constraints
- 1≤K≤100.
- 1≤M≤109.
- 0≤Ai,Ci<232.
Scoring
- Subtask 1 (50%): K≤10,M≤1000.
- Subtask 2 (50%): không có giới hạn bổ sung.
Example
Test 1
Input
2 4
1 2
4294967295 4294967295
Giải thích: Ta có A3=2XOR1=3, rồi A4=3XOR2=1.
Lời giải tóm tắt
- Phân tích: Phép XOR đóng vai trò cộng và phép AND đóng vai trò nhân trên semiring bit.
- Thuật toán: Dùng companion matrix K×K với đường chéo đơn vị là UINT32_MAX.
- Chứng minh tính đúng đắn: Hàng đầu thực hiện đúng công thức truy hồi; các hàng còn lại dịch lịch sử. Lũy thừa semiring bảo toàn từng bit độc lập.
- Độ phức tạp: Thời gian
O(K^3 log M); bộ nhớ O(K^2).