만드는 중입니다

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

회문 삭제

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

요약
문자열에서 무작위로 문자를 하나씩 지울 때 남은 문자열이 회문이 되는 횟수의 기댓값을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

Edsger가 새로 만든 게임 Palindromic Deletions에서는 길이가 NN인 문자열 하나가 주어진다. 이후 아래 과정을 NN번 수행한다.

  1. 현재 문자열에서 인덱스 하나를 균등한 확률로 무작위로 고른다.
  2. 그 인덱스의 문자를 삭제한다. 그러면 길이가 1 줄어든 새 문자열이 된다.
  3. 새 문자열이 회문이면 사탕을 하나 먹는다.

시작 문자열이 주어졌을 때, 게임 동안 먹는 사탕 개수의 기댓값을 구한다.

입력

첫 줄에 테스트 케이스 수 TT가 주어진다. 이후 TT개의 테스트 케이스가 나오며, 각 테스트 케이스는 두 줄로 이루어진다. 첫 줄에는 문자열의 길이 NN이 주어지고, 둘째 줄에는 길이가 NN인 소문자 영문자 문자열 SS가 주어진다.

출력

각 테스트 케이스마다 Case #x: E 형식의 한 줄을 출력한다. 여기서 xx는 1부터 시작하는 테스트 케이스 번호이고, EE는 먹는 사탕 개수의 기댓값이다.

EE는 소수 109+710^9+7 (10000000071000000007)로 나눈 나머지로 구한다. 테스트 케이스의 답을 기약분수 pq\frac{p}{q}로 나타낸다. 그러면 EE는 E×q≡p(mod109+7)E \times q \equiv p \pmod{10^9+7}를 만족해야 하며, 00 이상 109+610^9+6 이하이다. 이 문제의 제약 아래에서 그런 EE는 항상 존재하고 하나로 정해진다.

제한

  • 1≤T≤201 \le T \le 20.
  • SS는 영문 소문자로만 이루어진다.

실행 제한

시간 제한은 30000ms, 메모리 제한은 1024MB이다.

예제1

  1. 예제 1

    입력
    2
    2
    ab
    3
    aba
    
    예상 출력
    Case #1: 2
    Case #2: 333333338