题库练习 Morse Code
← 上一题 下一题 →

A12409 | Morse Code

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

In Morse code, an letter of English alphabet is represented as a string of some length from $1$ to $4$ . Moreover, each Morse code representation of an English letter contains only dots and dashes. In this task, we will represent a dot with a "0" and a dash with a "1".

Because there are $2^1+2^2+2^3+2^4 = 30$ strings with length $1$ to $4$ containing only "0" and/or "1", not all of them correspond to one of the $26$ English letters. In particular, each string of "0" and/or "1" of length at most $4$ translates into a distinct English letter, except the following four strings that do not correspond to any English alphabet: "0011", "0101", "1110", and "1111".

You will work with a string $S$ , which is initially empty. For $m$ times, either a dot or a dash will be appended to $S$ , one at a time. Your task is to find and report, after each of these modifications to string $S$ , the number of non-empty sequences of English letters that are represented with some substring of $S$ in Morse code.

Since the answers can be incredibly tremendous, print them modulo $10^9 + 7$ .

输入格式

The first line contains an integer $m$ ( $1 \leq m \leq 3\,000$ ) — the number of modifications to $S$ .

Each of the next $m$ lines contains either a "0" (representing a dot) or a "1" (representing a dash), specifying which character should be appended to $S$ .

输出格式

Print $m$ lines, the $i$ -th of which being the answer after the $i$ -th modification to $S$ .

输入输出样例

输入 #1
3
1
1
1
输出 #1
1
3
7
输入 #2
5
1
0
1
0
1
输出 #2
1
4
10
22
43
输入 #3
9
1
1
0
0
0
1
1
0
1
输出 #3
1
3
10
24
51
109
213
421
833
C++ 编辑器
输入
输出