K 아이템 쇼핑 스프리
시간 제한10초메모리 제한1024 MB
각 질의의 목표 가격 t에 대해, 가격 합이 t가 되는 길이 k의 인덱스 수열(반복과 순서 허용)의 개수를 997로 나눈 나머지로 구합니다.
문제
개학 시즌이 되어 쇼핑 스프리에 당첨되었다. 이 스프리에는 흥미로운 규칙이 몇 가지 있다. 고를 수 있는 물건은 개이며, 이 중에서 개로 이루어진 수열을 반드시 골라야 한다. 개 물건 중 어느 것이든 몇 번이고 원하는 만큼 선택할 수 있다. 쇼핑 스프리는 물건의 값이 아니라 선택한 물건의 번호로 구분되며, 대응하는 물건 번호 중 하나라도 다르면 두 스프리는 서로 다른 것으로 본다. 예를 들어 물건이 5개(번호 1부터 5까지)이고 그중 3개를 골라야 한다면, 다음은 모두 서로 다른 유효한 스프리이다: (1, 2, 1), (2, 1, 1), (2, 1, 3), (5, 5, 2), (3, 5, 4). 다시 말해 스프리는 물건 번호로 구분되며 물건의 값으로 구분하지 않는다. 앞의 두 스프리는 처음 고른 물건이 달라서 서로 다르다. 따라서 같은 물건 조합이라도 고르는 순서가 다르면 다른 스프리가 된다.
이 문제에서는 지정된 총합 값을 갖는 개 물건 쇼핑 스프리의 개수를 구해야 한다.
사용 가능한 물건의 개수, 각 물건의 값, 의 값, 그리고 가격 목표 가 주어졌을 때, 총합이 정확히 가 되는 정확히 개 물건의 쇼핑 스프리 개수를 구하라. 가능한 스프리의 수가 매우 클 수 있으므로 로 나눈 나머지를 구하라.
입력
첫 줄에는 테스트 케이스의 개수를 나타내는 양의 정수 가 주어진다. 각 테스트 케이스는 사용 가능한 물건의 개수 ()으로 시작한다. 이어지는 개의 줄에는 각 물건의 값(달러 단위)을 나타내는 소수점 아래 두 자리의 실수 ()가 한 줄에 하나씩 주어진다.
각 테스트 케이스의 다음 줄에는 공백으로 구분된 두 정수 ()와 ()가 주어진다. 는 순서대로 선택할 물건의 개수이고, 는 질의의 개수이다. 이어지는 개의 줄에는 각각 하나의 질의가 주어지며, 목표 값(달러 단위)을 나타내는 소수점 아래 두 자리의 실수 ()이다.
출력
각 질의에 대해, 값이 질의 값과 같은 쇼핑 스프리의 개수를 로 나눈 나머지로 한 줄에 하나씩 출력하라. 각 테스트 케이스의 출력 뒤에는 빈 줄을 하나 출력하라.