Hình yêu thích của Dima

Đề bài

Mô tả

Cho một tờ giấy kẻ ô vuông kích thước n×m, gồm n hàng và m cột. Ban đầu mọi ô đều màu trắng. Ta tô đen một số ô để tạo thành một hình. Một hình được gọi là đẹp nếu thỏa mãn cả ba điều kiện sau:

  • Có ít nhất một ô được tô đen.
  • Tập các ô đen liên thông: từ một ô đen bất kỳ có thể đi tới ô đen bất kỳ khác bằng cách di chuyển giữa hai ô kề cạnh (chỉ đi qua các ô đen).
  • Với mọi cặp ô đen tại vị trí (x1,y1) và (x2,y2), số bước ít nhất để đi từ ô này tới ô kia (chỉ đi qua các ô đen, mỗi bước sang một ô kề cạnh) đúng bằng |x1−x2|+|y1−y2|.

Hãy đếm số hình đẹp khác nhau có thể tạo ra trên tờ giấy n×m. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Hai hình được coi là khác nhau nếu tồn tại một ô được tô đen ở hình này nhưng không được tô đen ở hình kia.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên n và m: số hàng và số cột của tờ giấy.

Dữ liệu ra

In ra một số nguyên duy nhất: số hình đẹp, lấy phần dư khi chia cho 109+7.

Ràng buộc

  • 1≤n,m≤150

Ví dụ

Input Output Giải thích
2 2 13 Trên lưới 2×2 có 4 hình gồm 1 ô, 4 hình gồm 2 ô kề cạnh (domino), 4 hình chữ L gồm 3 ô, và 1 hình vuông đầy đủ gồm 4 ô, tổng cộng 13 hình.
3 4 571 Có 571 hình đẹp trên lưới 3×4.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0