아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Шифровка

시간 제한2초메모리 제한1024 MB

요약
주어진 이진 문자열을 런 렝스 인코딩한 결과로 갖는 원래 이진 문자열의 개수를 1e9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
문자열, 동적 계획법, 조합론, 구현
정답자
아직 제출이 없습니다

문제

Мориарти умер, но у него осталось множество последователей. И вот вчера в город с важным посланием прибыл один из них. Подкараулив его, Ватсон и Холмс поймали преступника, нашли у него в кармане письмо с посланием и стали допрашивать.

Допросив его, они узнали следующую информацию: в письме содержится зашифрованное описание коварного плана, который Мориарти не успел осуществить при жизни. Всю информацию злой гений предпочитал хранить в двоичном коде --- в виде строки, состоящей из нулей и единиц. Для шифрования сообщения, описывающего его коварный план, Мориарти использовал следующий алгоритм: он разбил строку, хранящуюся в двоичном коде, на максимальные по размеру группы подряд идущих одинаковых символов, а затем каждую группу заменил на соответствующий символ и количество его вхождений в данную группу. К примеру, группу 111 он заменит на 13, а группу 0000000000 на 010. Тогда строку 11100 Мориарти заменит на 1302, а строку 00000000001 на 01011.

Также оказалось, что после применения этого алгоритма шифрования к строке, описывающей коварный план, получилась строка, которая также является строкой, записанной в двоичном коде. Эту строку и послал в письме профессор.

Больше ничего узнать про это послание не удалось. Теперь Шерлок задался вопросом: как узнать, что именно было зашифровано? Однозначно вряд ли получится узнать. Поэтому он хочет узнать хотя бы количество возможных сообщений, которые после шифрования совпали бы с сообщением, которое они с Ватсоном перехватили. Это количество может быть довольно большим, поэтому Холмс просит Вас только найти его остаток от деления на 1,000,000,0071\\,000\\,000\\,007.

입력

В первой строке входного файла дано одно число nn --- длина сообщения, которое перехватили Холмс и Ватсон (1≤n≤100,0001 \le n \le 100\\,000).

Во второй строке входного файла дано это сообщение --- строка длиной nn, состоящая из символов 0 и 1.

출력

В единственной строке выходного файла выведите количество возможных исходных сообщений по модулю 1,000,000,0071\\,000\\,000\\,007.

예제2

  1. 예제 1

    입력
    4
    0111
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    00
    
    예상 출력
    0