자연수 분할 K (Medium)
자연수 \(N\)을 여러 자연수의 합으로 나타내는 것을 자연수 분할이라고 한다.
이 문제에서는 분할에 사용하는 모든 자연수가 \(K\) 이하여야 한다. 같은 자연수를 여러 번 사용할 수 있으며, 사용하는 자연수의 개수에는 제한이 없다.
덧셈의 순서만 다른 표현은 같은 분할로 취급한다. 예를 들어 \(3+2\)와 \(2+3\)은 같은 분할이다.
두 자연수 \(N\)과 \(K\)가 주어졌을 때, \(N\)을 \(K\) 이하의 자연수들의 합으로 나타내는 서로 다른 분할 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 두 자연수 \(N\)과 \(K\)가 공백으로 구분되어 주어진다.
출력
첫째 줄에 조건을 만족하는 자연수 분할 방법의 수를 \(1,000,000,007\)로 나눈 나머지를 출력한다.
제한 사항
- \(1 \le N \le 500\)
- \(1 \le K \le N\)
예제 입력 1
5 2
예제 출력 1
3
예제 설명 1
\(5\)를 \(2\) 이하의 자연수로 분할하는 방법은 다음 세 가지이다.
- \(2+2+1\)
- \(2+1+1+1\)
- \(1+1+1+1+1\)
\(2\)를 반드시 사용할 필요는 없으며, 사용하는 자연수의 개수에도 제한이 없다.
예제 입력 2
5 5
예제 출력 2
7
예제 설명 2
\(K=N\)이면 \(N\) 이하의 모든 자연수를 사용할 수 있으므로 일반적인 \(N\)의 자연수 분할 방법의 수와 같다.
코멘트