만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

123456789 찾기

시간 제한1초메모리 제한512 MB

요약
S에서 P가 등장하는 시작 위치 중 곱이 1부터 9까지 모든 수로 나누어떨어지는 부분집합 개수를 1000000007로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

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

문제

문자열 S와 P가 주어진다. S 안에서 P가 나타나는 시작 위치 가운데 하나 이상을 골라, 고른 위치를 모두 곱한 값이 1부터 9까지의 모든 자연수로 나누어떨어지도록 하는 방법의 수를 구하시오.

시작 위치는 S의 첫 글자를 1번으로 하여 센다. P가 나타나는 구간은 서로 겹쳐도 된다. 고른 시작 위치의 집합이 다르면 서로 다른 방법으로 센다.

예를 들어 P = "a", S = "aaaaaaa"라면 조건을 만족하는 방법은 {1, 2, 3, 4, 5, 6, 7}, {2, 3, 4, 5, 6, 7}, {3, 4, 5, 6, 7}, {1, 3, 4, 5, 6, 7}의 네 가지다.

입력

첫째 줄에 P가, 둘째 줄에 S가 주어진다. 두 문자열은 알파벳 소문자로만 이루어져 있고, 길이는 1 이상 10,000 이하이다.

출력

첫째 줄에 조건을 만족하는 방법의 수를 109+710^9+7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    a
    aaaaaaa
    
    예상 출력
    4
    
  2. 예제 2

    입력
    aa
    aaaaaaaaaaaaaaaaa
    
    예상 출력
    35544
    
  3. 예제 3

    입력
    aa
    aaaaaaaacaaaadaaafajaiaaaaaa
    
    예상 출력
    53712