아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

줄 나누기

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

요약
크기가 30 이하인 n을 등차수열 m, m+k, m+2k에 속하는 부분 크기를 쓰지 않고 분할하는 경우의 수를 각 테스트마다 구한다.
난이도

보통10점 중 4점

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

문제

비행기에 타려고 승객 n명이 한 줄로 서 있다. 탑승구가 붐비지 않도록 이 줄을 앞에서부터 연속한 여러 조각으로 자른다. 크기가 3인 줄은 1+2, 2+1, 1+1+1, 3으로 자를 수 있다. 조각 크기가 같아도 순서가 다르면 다른 방법으로 세므로, 크기가 n인 줄을 자르는 방법은 모두 2n−12^{n-1}가지다.

쓸 수 없는 조각 크기가 생기면 문제가 조금 어려워진다. 정수 m과 k가 주어질 때 등차수열 m,m+k,m+2k,…m, m+k, m+2k, \dots에 들어 있는 수는 조각 크기로 쓸 수 없다. 예를 들어 m이 0이고 k가 2이면 짝수 크기를 모두 쓸 수 없으므로, 크기가 4인 줄을 자르는 방법은 1+1+1+1, 1+3, 3+1의 3가지뿐이다.

모든 조각의 크기는 1 이상이다. 크기가 n인 줄을 이 조건에 맞게 자르는 방법의 수를 구하라.

입력

첫째 줄에 테스트 케이스의 개수 t가 주어진다 (1≤t≤100001 \le t \le 10000). 다음 t개 줄에는 각각 정수 n, m, k가 공백으로 구분되어 주어진다 (1≤n≤301 \le n \le 30, 0≤m<k<300 \le m < k < 30).

출력

각 테스트 케이스마다 자르는 방법의 수를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    3
    10 0 2
    15 1 4
    28 3 7
    
    예상 출력
    55
    235
    18848806
    
  2. 예제 2

    입력
    2
    4 0 2
    3 0 4
    
    예상 출력
    3
    4