만드는 중입니다

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

드래곤 패턴

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

요약
원점에서 시작하는 왼쪽 드래곤 커브의 길이 2^n인 방향 문자열에서 패턴 S가 연속 구간으로 등장하는 횟수를 셉니다.
난이도

어려움10점 중 9점

유형
문자열 매칭, 재귀, 분할 정복, 동적 계획법
정답자
아직 제출이 없습니다

문제

드래곤 곡선은 길이가 1인 선분을 이어 붙인 꺾은선이고, 재귀적으로 정의한다. 평면 위의 한 점과 좌표축에 평행한 네 방향 중 하나를 정한 다음, 차수 nn의 왼쪽(오른쪽) 드래곤을 이렇게 그린다.

  • nn이 0이면 현재 점에서 현재 방향으로 길이 1인 선분을 그리고 그 끝점으로 이동한다.
  • 그렇지 않으면 현재 점에서 현재 방향으로 차수 n−1n-1의 왼쪽 드래곤을 그리고, 끝점에서 왼쪽(오른쪽)으로 90도 돌린 뒤, 차수 n−1n-1의 오른쪽 드래곤을 그린다.

원점 (0,0)(0, 0)에서 OXOX축의 양의 방향으로 출발해 차수 nn의 왼쪽 드래곤을 그린다. 길이 1인 이동이 차례로 2n2^n번 일어나므로, 이동 방향을 순서대로 적으면 길이 2n2^n인 문자열이 된다.

패턴도 이동 방향을 차례로 나열한 문자열이다. 이 방향 문자열에서 패턴과 같은 부분 문자열이 몇 개인지, 즉 패턴이 시작하는 위치가 몇 개인지 구하여라.

입력

정수 nn과 패턴을 나타내는 문자열 SS가 공백 하나를 사이에 두고 한 줄로 주어진다. SS는 문자 R, L, U, D로만 이루어진다. R은 오른쪽 이동(OXOX축의 양의 방향), L은 왼쪽 이동(OXOX축의 음의 방향), U는 위쪽 이동(OYOY축의 양의 방향), D는 아래쪽 이동(OYOY축의 음의 방향)을 뜻한다.

0≤n≤1090 \le n \le 10^9, 1≤∣S∣≤1061 \le |S| \le 10^6이다.

출력

OXOX축의 양의 방향으로 그린 차수 nn의 왼쪽 드래곤에서 패턴 SS가 나타나는 횟수를 109+710^9+7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    2 RU
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3 L
    
    예상 출력
    3
    
  3. 예제 3

    입력
    4 LDL
    
    예상 출력
    2