균형잡힌 문자열

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

요약
길이 n인 이진 문자열 가운데 모든 접두사에서 0과 1의 개수 차이가 1 이하인 문자열의 수를 16769023으로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

0과 1로 이루어진 이진 문자열 0101101은 0과 1의 개수 차이가 1 이하이다. 첫 번째 문자를 포함하는 모든 부분 문자열 0, 01, 010, 0101, 01011, 010110, 0101101도 0과 1의 개수 차이가 모두 1 이하이다.

이와 같이, 이진 문자열 중에서 첫 번째 문자를 포함하는 모든 부분 문자열의 0과 1의 개수 차이가 1 이하인 문자열을 균형잡힌 문자열이라 부른다. 문자열 자체도 자신의 부분 문자열이다.

양의 정수 n이 주어질 때, 길이가 n인 이진 문자열 중에서 균형잡힌 문자열의 수를 구하는 프로그램을 작성하시오.

예를 들어, n = 3인 경우에는 010, 011, 100, 101 네 개의 문자열이 균형잡힌 문자열이다.

입력

입력은 표준입력을 사용한다. 첫 번째 줄에 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다.

출력

출력은 표준출력을 사용한다. 길이가 n인 이진 문자열 중에서 균형잡힌 문자열의 개수를 16769023로 나눈 나머지 값을 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3
    
    예상 출력
    4
    
  2. 예제 2

    입력
    22
    
    예상 출력
    2048
    
  3. 예제 3

    입력
    101
    
    예상 출력
    393256