Mảnh ghép lục giác
View as PDF
Submit solution
Points:
1.00 (partial)
Time limit:
2.0s
Python 3
4.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Problem types
Allowed languages
C++, Java, Python
Cho một bảng gồm H hàng và W cột ô lục giác đều. Các ô được đánh số bằng cặp tọa độ (r, c), với 1 ≤ r ≤ H và 1 ≤ c ≤ W. Hai ô được xem là kề cạnh nếu tọa độ của chúng là một trong các cặp sau (và cả hai ô đều thuộc bảng):
(r, c)và(r, c + 1);- Nếu
rlẻ:(r, c)và(r + 1, c), hoặc(r + 1, c - 1); - Nếu
rchẵn:(r, c)và(r + 1, c), hoặc(r + 1, c + 1).
Có hai loại mảnh ghép:

- Mảnh loại 2 phủ đúng hai ô kề cạnh.
- Mảnh loại 3 phủ đúng ba ô, trong đó từng cặp ô đều kề cạnh (tạo thành một tam giác nhỏ).
Các mảnh có thể xoay tùy ý. Hãy đếm số cách lát kín bảng sao cho mỗi ô được phủ đúng một lần. Hai cách lát được xem là khác nhau nếu có ít nhất một ô thuộc các mảnh khác nhau.
Vì kết quả có thể rất lớn, hãy in kết quả modulo 1 000 000 007.

Dữ liệu vào
Một dòng gồm hai số nguyên H và W.
Dữ liệu ra
In ra số cách lát kín bảng modulo 1 000 000 007.
Ràng buộc
- 1 ≤ H ≤ 6
- 1 ≤ W ≤ 10^18
Phân nhóm điểm
- (10 điểm) H = 1, W ≤ 10^5.
- (20 điểm) H ≤ 2, W ≤ 10^5.
- (30 điểm) H ≤ 4, W ≤ 10^18.
- (40 điểm) H ≤ 6, W ≤ 10^18.
Ví dụ
Input
2 3
Output
4
Loading...