페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3387

레드불 1s 512MB

문제

대현이에게도 어김없이 과제폭탄이 떨어졌다! 

연속된 밤샘으로 몸이 녹초가 된 대현이는 에너지 드링크 레드불 한 캔을 꿀꺽했다. 

피로가 풀리나 싶더니.......

 

 

대현이는 몸이 가벼워진 걸 느낄 수 있었다! 

무슨 일인지 당황해한 대현이는 거울을 보았는데 등 뒤에 날개가 달려버렸다. 

‘레드불 날개를 달아줘요’ 라는 광고 모토가 실제로 이루어지자 대현이는 하늘을 날기로 결심하였다.

 대현이는 현재 (0, 0) 위치에 있으며 신나게 비행하다가 (N, 0)에 도달하고 비행을 끝내려고 한다. 

대현이가 매초 할 수 있는 행동은 다음과 같다.

 

- 날개를 펄럭임 : 대현이가 오른쪽 위로 이동함.

- 날개를 멈춤 : 대현이가 수직낙하하며 오른쪽의 고도 0 위치로 이동함. (고도가 0이라면 그대로 걸어가서 오른쪽의 고도 0 위치로 이동함.)

 

고도가 K 이상이 되면 산소 농도가 부족하여 대현이가 숨 쉴 수 없다. 

따라서 대현이는 고도가 K 이상이 되지 않도록 비행을 하려고 한다. 

대현이가 비행할 수 있는 방법의 수를 구하는 프로그램을 작성하여라.

 


입력

첫 번째 줄에는 비행거리 N과 최대 고도 K가 주어진다. (1 ≤ K ≤ N ≤ 2,000,000) 20점에 해당되는 데이터는 N ≤ 20을 만족한다. 50점에 해당되는 데이터는 N ≤ 2,000을 만족한다.

출력

대현이가 비행할 수 있는 방법의 수를 1,000,000,007로 나눈 나머지를 출력한다.

예제 #1

4 3
7

예제 #2

11 5
912

예제 #3

55 35
377876174

출처

EJOI 2017 예비소집 문제 3
로그인해야 코드를 작성할 수 있어요.