Bữa Tiệc Hoa

Đề bài

Mô tả

Một bữa ăn được biểu diễn bằng một dãy các bông hoa, mỗi bông có màu đỏ hoặc màu trắng. Để bữa ăn ngon, có một quy tắc: các bông hoa trắng chỉ được phép xuất hiện thành từng đoạn liên tiếp có độ dài đúng bằng k.

Nói cách khác, trong dãy hoa, mọi đoạn cực đại gồm toàn các bông hoa trắng liên tiếp đều phải có độ dài là bội của k.

Với mỗi truy vấn gồm hai số a và b, hãy đếm tổng số dãy hoa hợp lệ có độ dài nằm trong khoảng từ a đến b (tính cả hai đầu mút). 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

  • Dòng đầu chứa hai số nguyên t và k — số truy vấn và độ dài đoạn hoa trắng bắt buộc.
  • t dòng tiếp theo, mỗi dòng chứa hai số nguyên ai và bi mô tả truy vấn thứ i.

Dữ liệu ra

In ra t dòng, dòng thứ i là số dãy hoa hợp lệ có độ dài từ ai đến bi, lấy phần dư cho 109+7.

Ràng buộc

  • 1≤t,k≤105
  • 1≤ai≤bi≤105

Ví dụ

Input Output Giải thích
3 2
1 3
2 3
4 4
6
5
5
Với k=2: độ dài 1 có 1 cách (Đ); độ dài 2 có 2 cách (ĐĐ, TT); độ dài 3 có 3 cách (ĐĐĐ, ĐTT, TTĐ). Truy vấn 1..3 cho 1+2+3=6. Truy vấn 2..3 cho 2+3=5. Độ dài 4 có 5 cách nên truy vấn 4..4 cho 5.
1 1
1 3
14 Với k=1 mọi bông hoa trắng đều hợp lệ, nên mỗi vị trí có 2 lựa chọn: độ dài 1, 2, 3 lần lượt có 2,4,8 cách, tổng 2+4+8=14.

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