장학금 표 만들기
시간 제한4초메모리 제한256 MB
주어진 학생 CGPA를 너비가 같은 구간으로 나누고 등차수열 장학률로 예산 P를 정확히 쓰는 표 개수를 셉니다.
문제
어떤 대학은 학생의 누적 평점(CGPA)에 따라 장학금을 준다. 학기가 시작되면 평점 구간별 장학금 비율을 표로 만들어 게시판에 붙인다. 예를 들면 다음 두 표와 같다.
첫 번째 표는 평점이 3.60 이상 3.69 이하인 학생이 등록금의 10%를 장학금으로 받는다는 뜻이다. 같은 방식으로 평점이 3.90에서 3.99 사이인 학생은 40%를 받는다. 이런 표를 만드는 규칙은 다음과 같다.
- 한 평점 구간에 속한 학생은 모두 같은 비율의 장학금을 받는다.
- 모든 구간의 폭은 같아야 한다. 가장 높은 구간만 예외로 더 좁아도 된다. 구간은 가장 낮은 구간의 아래 끝에서 시작해 같은 폭으로 이어지고, 4.00을 포함하는 구간에서 끝난다. 마지막 구간의 위쪽은 4.00에서 잘린다.
- 가장 낮은 구간의 장학금 비율은 양의 정수이다. 구간이 한 단계 올라갈 때마다 비율은 정해진 양의 정수만큼 늘어난다. 첫 번째 표에서 이 증가량은 10%, 두 번째 표에서는 30%이다.
- 각 구간의 장학금 비율은 항상 양의 정수이고 100%를 넘을 수 없다.
- 학생 한 명에게 1%의 장학금을 주는 데 드는 금액을 1단위라고 한다. 두 학생에게 50%씩 주려면 단위가 든다.
- 배정된 장학금 단위를 남김없이 모두 써야 한다.
- 장학금 구간은 2.50보다 낮은 평점에서 시작할 수 없다. 2.50-2.55는 되지만 2.45-2.55는 안 된다.
- 구간은 두 개 이상이어야 한다. 학생이 한 명도 없는 구간이 있어도 된다.
평점과 구간의 경계는 모두 0.00 이상 4.00 이하이고 0.01의 배수이다.
학생 수와 써야 할 장학금 단위 수, 학생 각각의 평점이 주어진다. 단위를 정확히 다 쓰는 서로 다른 장학금 표가 몇 가지인지 세어라. 두 표는 평점 구간이 다르거나 어느 한 구간의 비율이 다르면 서로 다른 표이다.
입력
입력은 여러 테스트 집합으로 이루어지고, 집합은 최대 100개이다.
각 집합의 첫 줄에 학생 수 ()과 써야 할 장학금 단위 수 ()가 공백을 사이에 두고 주어진다. 이어지는 개 줄에는 학생 한 명의 평점이 한 줄에 하나씩 소수점 아래 두 자리로 주어진다. 평점은 0.00 이상 4.00 이하이다.
입력의 마지막 줄에는 0이 두 개 주어지며, 이 줄은 처리하지 않는다. 모든 집합에는 단위를 정확히 쓰는 표가 적어도 하나 있다.
출력
각 테스트 집합마다 단위를 남김없이 쓰는 서로 다른 장학금 표의 개수 를 한 줄에 하나씩 출력한다.
힌트
첫 번째 예제에서 가장 낮은 구간을 2.88-3.02로 잡고 같은 폭으로 4.00까지 이어가면 구간이 여덟 개가 된다. 최저 비율 10%에 증가량 10%를 쓰면 다음 표가 나온다.
합계는 410단위이다. 410단위를 정확히 쓰는 표는 이 밖에도 79553가지가 더 있다.