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

Đi thang máy

Đề bài

Mô tả

Trong một tòa nhà có n tầng được đánh số từ 1 đến n. Bạn đang ở tầng a và muốn đi thang máy. Ở tầng b có một phòng thí nghiệm bí mật, nên không bao giờ được dừng ở tầng b.

Bạn sẽ thực hiện đúng k chuyến đi liên tiếp. Giả sử bạn đang ở tầng x. Bạn chọn tầng đích y thỏa mãn:

  • yx,
  • |xy|<|xb| (khoảng cách từ tầng hiện tại tới y nhỏ hơn khoảng cách từ tầng hiện tại tới phòng thí nghiệm).

Thang máy đưa bạn tới tầng y và bạn ghi y vào sổ tay. Tầng tiếp theo lại chọn tương tự xuất phát từ y.

Hãy đếm số dãy số phân biệt y1,y2,,yk có thể được ghi vào sổ tay sau k chuyến đi. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

Một dòng chứa bốn số nguyên n, a, b, k.

Dữ liệu ra

In ra một số nguyên duy nhất — số dãy số phân biệt modulo 109+7.

Ràng buộc

  • 2n5000
  • 1k5000
  • 1a,bnab

Ví dụ

Input Output Giải thích
5 2 4 1 2 Từ tầng 2 với b=4, có thể đi tới tầng 1 hoặc 3|12|<|24||32|<|24|.
5 2 4 2 2 Hai dãy hợp lệ: (1,2)(1,3). Nếu chuyến đầu chọn tầng 3 thì chuyến sau không còn tầng nào hợp lệ.
5 3 4 1 0 Từ tầng 3 với b=4, không có tầng nào thỏa mãn |3y|<1 ngoài chính nó.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0