| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 85 | 26 | 23 | 37.705% |
재우는 결국 지난 <제2회 고려대학교 MatKor Cup: 2023 Winter> 대회의 수영 과목에서 F를 막지 못했다. 이에 절치부심하여 이번 학기의 볼링 수업에서는 반드시 Pass를 받기로 다짐했다. 볼링은 10ドル$개의 프레임으로 이루어져 있다. 볼링의 규칙과 점수 계산 방식은 다음과 같다.
<규칙>
<점수 계산 방식>
재우가 볼링 수업에서 Pass를 받기 위해 스코어보드 사진을 찍어 가야 한다고 한다. 재우가 사진을 찍을 때 사진이 흔들리는 바람에 일부 점수가 보이지 않는다. 스코어보드에는 투구별 결과가 적혀있다.
각 투구 결과와 프레임별 점수 중 일부가 주어질 때, 최종적으로 $M$점이 되는 경우의 수를 10ドル^9+7$로 나눈 나머지를 구해보자. 스코어보드에 표시되는 결과가 하나라도 다른 경우 다른 경우의 수로 센다.
첫 줄에 1ドル$번부터 10ドル$번 프레임에 대해 한 줄에 한 프레임씩 각 투구의 정보가 아래 방식으로 길이 21ドル$의 문자열 하나로 주어진다. 이때, 10ドル$번 프레임의 세 번의 투구는 스코어보드에서 모두 투구 내용이 보인다. 즉, 마지막 세 문자는 ?가 아니다.
?X/.-만약 투구에 대한 정보로 가능한 경우가 겹치면, 더 위의 정보를 준다. 예를 들어 두 번째 투구에서 남아 있는 2ドル$개의 핀을 넘겨 스페어 처리한 경우 2ドル$가 아닌 /가 주어진다.
다음 줄에 경우의 수를 구하고 싶은 점수의 개수 $S=221$가 주어진다.
다음 줄에 점수를 검사하고 싶은 점수 $M_i = i(i =0, 1, 2, \cdots, S)$가 순서대로 공백으로 구분되어 주어진다.
예제의 입력은 $S\ne 221$이며 $M_i \ne i$이나, 이는 단순 사용자 테스트용으로 채점되지 않는다. 실제 입력은 $S = 221$이며 $M_i = i$인 경우만 주어진다.
첫 줄에 $M=M_0(=0)$ 부터 $M=M_S(=S-1=220)$점 까지 해당 스코어 보드에서 최종적으로 $M$점이 되는 경우의 수를 10ドル^9+7$로 나눈 나머지를 공백으로 구분하여 출력한다.
주어진 스코어보드가 불가능한($M$점이 되는 경우의 수가 0ドル$인 것과는 다르다) 경우는 주어지지 않는다.
예제의 입력은 $S\ne 221$이며 $M_i \ne i$이나, 실제 입력은 $S = 221$이며 $M_i = i$이므로, 사용자가 제출할 때는 221ドル$개의 정수를 출력해야 한다.
??????????????????--. 6 0 1 2 3 4 220
1 18 171 1140 5985 0
??????????????????XXX 3 0 219 220
0 73070 72181
-?-??2??6?7/26X.4?72. 5 54 55 56 57 58
0 1 6 22 62
University > 고려대학교 > MatKor Cup > 제3회 고려대학교 MatKor Cup: 2023 Summer > Div. 1 B번
University > 고려대학교 > MatKor Cup > 제3회 고려대학교 MatKor Cup: 2023 Summer > Open Contest - Phase 1 D번