描述 Description
Hamed has recently found a string t and suddenly became quite fond of it. He spent several days trying to find all occurrences of t in other strings he had. Finally he became tired and started thinking about the following problem. Given a string s how many ways are there to extract k ≥ 1 non-overlapping substrings from it such that each of them contains string t as a substring? More formally, you need to calculate the number of ways to choose two sequences a1, a2, …, ak and b1, b2, …, bk satisfying the following requirements:
k ≥ 1
\[\forall i(1 \leq i \leq k) \ 1 \leq a_i,b_i \leq |s|\]
\[\forall i(1 \leq i \leq k) \ b_i \geq a_i\]
\[\forall i(2 \leq i \leq k) \ a_i > b_{i-1}\]
\[\forall i(1 \leq i \leq k)\] t is a substring of string saisai + 1… sbi (string s is considered as 1-indexed).
As the number of ways can be rather large print it modulo 109 + 7.
Read More