CF1129C.Morse Code

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

In Morse code, an letter of English alphabet is represented as a string of some length from 11 to 44 . 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 21+22+23+24=302^1+2^2+2^3+2^4 = 30 strings with length 11 to 44 containing only "0" and/or "1", not all of them correspond to one of the 2626 English letters. In particular, each string of "0" and/or "1" of length at most 44 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 SS , which is initially empty. For mm times, either a dot or a dash will be appended to SS , one at a time. Your task is to find and report, after each of these modifications to string SS , the number of non-empty sequences of English letters that are represented with some substring of SS in Morse code.

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

输入格式

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

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

输出格式

Print mm lines, the ii -th of which being the answer after the ii -th modification to SS .

输入输出样例

  • 输入#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
    

说明/提示

Let us consider the first sample after all characters have been appended to SS , so S is "111".

As you can see, "1", "11", and "111" all correspond to some distinct English letter. In fact, they are translated into a 'T', an 'M', and an 'O', respectively. All non-empty sequences of English letters that are represented with some substring of SS in Morse code, therefore, are as follows.

  1. "T" (translates into "1")
  2. "M" (translates into "11")
  3. "O" (translates into "111")
  4. "TT" (translates into "11")
  5. "TM" (translates into "111")
  6. "MT" (translates into "111")
  7. "TTT" (translates into "111")

Although unnecessary for this task, a conversion table from English alphabets into Morse code can be found here.

首页