쿠키 먹는 방법 세기
시간 제한8초메모리 제한512 MB
각 날의 양이 0 이상 X 미만인 D일의 수열 중 합이 N이 되는 경우의 수를 1e9+7로 나눈 나머지를 구한다.
문제
할머니가 쿠키 개를 남기고 가셨다. 누나와 나는 곧바로 먹으려 했지만, 쿠키 옆에 안내문이 붙어 있었다.
- 쿠키는 상하니 일 안에 모두 먹어야 한다.
- 과식하면 안 되니 하루에 먹는 개수는 개보다 적어야 한다.
누나가 말했다. "쿠키를 모두 먹는 방법이 몇 가지나 될까? 한번 세어 보자!"
하나의 방법은 첫째 날부터 째 날까지 날마다 먹은 쿠키 개수를 순서대로 적은 것이다. 하루에 먹는 개수는 이상이고 보다 작아야 하며, 일 동안 먹은 개수의 합은 정확히 이어야 한다. 한 개도 먹지 않는 날이 있어도 된다. 먹은 개수가 다른 날이 하나라도 있으면 두 방법은 서로 다른 방법으로 센다.
예를 들어 , , 가 각각 , , 이면 방법은 4가지다.
- 첫째 날에 1개, 둘째 날에 4개를 먹는다.
- 첫째 날에 2개, 둘째 날에 3개를 먹는다.
- 첫째 날에 3개, 둘째 날에 2개를 먹는다.
- 첫째 날에 4개, 둘째 날에 1개를 먹는다.
방법의 수가 아주 커서 누나가 손으로 세다가는 끝을 보지 못할 것 같다. 그래서 프로그램으로 세기로 했다.
입력
입력은 여러 개의 데이터 세트로 이루어진다. 데이터 세트는 100개를 넘지 않는다. 각 데이터 세트는 한 줄에 세 정수 (), (), ()가 공백을 두고 주어진다. 입력의 끝은 세 정수가 모두 인 줄로 나타내며, 이 줄은 처리하지 않는다.
출력
각 데이터 세트마다 방법의 수를 로 나눈 나머지를 한 줄에 출력한다.