만드는 중입니다

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

의사 난수

면접 대비

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

요약
길이가 n인 이진 문자열 중 같은 비트가 k보다 길게 연속으로 나오지 않는 문자열의 개수를 구합니다.
난이도

쉬움10점 중 3점

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

문제

숫자가 진짜 무작위라면 길이 nn인 모든 비트열(0과 1로 이루어진 문자열)이 같은 확률로 나타나야 한다. 예를 들어 111111과 010110이 나올 확률은 같아야 한다. 하지만 대부분의 사람은 같은 비트가 계속 반복해서 보이면 그 과정이 진짜 무작위일 수 없다고 생각한다.

당신은 비디오 게임에 쓸 길이 nn인 무작위 비트열을 만드는 일을 맡았다. 게임 제작자는 0 또는 1이 연속으로 kk개를 초과하여 나오는 비트열을 모두 제외해 달라고 요청했다. 예를 들어 n=4n = 4, k=2k = 2이면 유효한 비트열은 0010, 0011, 0100, 0101, 0110, 1001, 1010, 1011, 1100, 1101의 10개다. 나머지 6개는 같은 비트가 3번 이상 연속으로 나오므로 유효하지 않다.

nn과 kk가 주어졌을 때, 0 또는 1이 kk보다 길게 연속으로 나오는 구간이 없는 길이 nn의 비트열 개수를 구하라.

입력

입력은 한 줄이며, 두 정수 nn(2≤n≤202 \le n \le 20)과 kk(1≤k≤n1 \le k \le n)이 주어진다. nn은 비트열의 길이이고, kk는 비트열에서 0 또는 1이 연속으로 나올 수 있는 최대 길이이다.

출력

같은 비트가 kk보다 길게 연속으로 나오지 않는, 길이 nn의 유효한 비트열의 개수를 출력한다.

예제3

  1. 예제 1

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

    입력
    5 1
    
    예상 출력
    2
    
  3. 예제 3

    입력
    20 20
    
    예상 출력
    1048576