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

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

Konkotenacja

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

요약
주어진 단어를 리터럴 kot 구분자로 이은 낱말 나열로 만드는 경우의 수를 1000000007로 나눈 나머지를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 누적 합, 문자열 매칭
정답자
아직 제출이 없습니다

문제

두 단어 A, B의 콘코테나차(konkotenacja) 는 두 단어를 문자열 kot으로 이어 붙인 단어 AkotB로 정의한다. 예를 들어 mas와 ka의 콘코테나차는 maskotka이다.

이 연산은 단어들의 수열 전체로 확장된다. 수열에 있는 모든 단어를 등장 순서대로 이어 붙이되, 인접한 두 단어 사이마다 kot을 끼워 넣는다. 예를 들어 수열 (aa, b, cc, d)를 콘코테나차하면 aakotbkotcckotd가 된다.

단어 W가 주어질 때, 비어 있지 않은 단어들로 이루어진 서로 다른 수열 중에서 콘코테나차했을 때 W가 되는 것은 몇 개인가?

입력

첫째 줄에 정수 Z (1≤Z≤101 \le Z \le 10), 즉 테스트 케이스의 개수가 주어진다.

이어지는 Z개의 줄에는 각각 소문자 영어 알파벳으로만 이루어진 비어 있지 않은 단어 W가 하나씩 주어진다. W의 길이는 1 000 0001\,000\,000을 넘지 않는다.

출력

각 단어에 대해, 콘코테나차했을 때 그 단어가 되는 서로 다른 수열의 개수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 한 줄에 하나씩 음이 아닌 정수로 출력한다.

설명

단어 maskotka는 정확히 두 개의 수열 (mas, ka)와 (maskotka)로부터 얻을 수 있다.

단어 akotkot 역시 정확히 두 개의 수열 (a, kot)와 (akotkot)로부터 얻을 수 있다.

예제2

  1. 예제 1

    입력
    2
    maskotka
    akotkot
    
    예상 출력
    2
    2
    
  2. 예제 2

    입력
    1
    aakotbkotcckotd
    
    예상 출력
    8