trang chủ / bài tập / magicgems

Đá Phép

Đề bài

Mô tả

Reziba có rất nhiều viên đá phép. Mỗi viên đá phép có thể được tách thành M viên đá thường. Một viên đá (dù là đá phép hay đá thường) chiếm đúng 1 đơn vị không gian, và một viên đá thường thì không thể tách tiếp.

Reziba muốn chọn một tập các viên đá phép rồi tách một số viên trong đó, sao cho tổng không gian bị chiếm bởi tập đá thu được đúng bằng N đơn vị. Nếu một viên đá phép được chọn và được tách, nó chiếm M đơn vị không gian (vì biến thành M viên đá thường); nếu viên đá phép được chọn nhưng không tách, nó chiếm 1 đơn vị.

Hỏi có bao nhiêu cấu hình khác nhau của tập đá thu được sao cho tổng không gian chiếm đúng N đơn vị? In ra kết quả theo modulo 109+7.

Hai cấu hình được xem là khác nhau nếu số viên đá phép mà Reziba lấy để tạo thành chúng khác nhau, hoặc vị trí (thứ tự) các viên đá bị tách khác nhau. Nói cách khác, một cấu hình là một dãy các viên đá xếp theo thứ tự, mỗi viên hoặc chiếm 1 đơn vị (đá không tách) hoặc chiếm M đơn vị (đá đã tách), với tổng độ dài bằng N.

Dữ liệu vào

Một dòng duy nhất gồm hai số nguyên NM.

Dữ liệu ra

In ra một số nguyên duy nhất — tổng số cấu hình, theo modulo 109+7.

Ràng buộc

  • 1N1018
  • 2M100

Ví dụ

Input Output Giải thích
4 2 5 Ký hiệu 1 là viên đá không tách (chiếm 1 đơn vị), 0 là viên đá đã tách thành 2 đá thường (chiếm 2 đơn vị). Các cấu hình có tổng 4 đơn vị: 1111, 0011, 1001, 1100, 0000 — tất cả 5 cấu hình.
3 2 3 Các cấu hình độ dài 3: 111, 001, 100 — tổng cộng 3 cấu hình.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0