만드는 중입니다

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

prlong longf

면접 대비

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

요약
주어진 문자열에서 모든 int를 longlong으로 바꾼 결과라고 할 때, 가능한 원래 문자열의 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

성서는 Bronze 5 난이도의 문제를 풀다가 "틀렸습니다" 판정을 받았다.

계산 도중 수가 너무 커져서 오버플로우가 발생했다고 생각한 성서는 코드 에디터의 "찾기 및 바꾸기" 기능으로 코드의 int를 모두 long long으로 바꿨다. 그런데 printf까지 모두 prlong longf로 바뀌는 사고가 일어났다!

#include <stdio.h>

long long main(){
    long long n, res = 1;
    scanf("%d", &n);
    for(long long i = 1; i <= n; i++){
        res *= i;
    }
    prlong longf("%d\n", res);
    return 0;
}

스스로 코드를 고치기 귀찮았던 성서는 대회 참가자들에게 바뀐 코드를 주고 초기 상태로 복원해 달라고 부탁하려 했다. 그러나 주어진 코드로는 복원 방법이 유일하지 않을 수 있다는 사실을 깨달았다. 좋은 문제 아이디어를 떠올린 성서는 2023 SCON에 다음과 같은 문제를 출제했다.

모든 int가 longlong으로 바뀐 문자열이 주어진다. 가능한 원래 문자열은 모두 몇 가지인가?

입력

첫째 줄에 바뀐 문자열의 길이 NN이 주어진다.

둘째 줄에 모든 int가 longlong으로 바뀐 길이 NN의 문자열이 주어진다.

출력

원래 문자열이 될 수 있는 경우의 수를 출력한다.

제한

  • 1≤N≤801\leq N\leq 80
  • 주어진 문자열의 모든 문자는 알파벳 소문자이고, 공백을 포함하지 않는다.
  • 주어진 문자열은 int를 부분 문자열로 갖지 않는다.

예제3

  1. 예제 1

    입력
    15
    prlonglonglongf
    
    예상 출력
    3
    
  2. 예제 2

    입력
    15
    longestpathtowf
    
    예상 출력
    1
    
  3. 예제 3

    입력
    22
    longlongdoublelonglong
    
    예상 출력
    4