문제 5266 · 메가 V
마라톤 코스 설계
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
마라톤 대회 기획단은 코스를 새로 설계하려 한다. 코스는 n개의 구간으로 이루어지며, 각 구간은 고도가 정확히 1 올라가는 오르막이거나 정확히 1 내려가는 내리막이다. 출발점의 고도는 0이고, 구간을 차례로 지나면서 고도가 바뀐다. 안전 기준에 따라 코스 위의 모든 지점(출발점과 각 구간의 끝 지점)의 고도는 -a 이상이어야 한다. 또한 도착점의 고도는 정확히 h여야 한다. h는 음수일 수도 있다. 오르막과 내리막의 배치가 하나라도 다르면 서로 다른 코스로 센다. 기획단은 조건에 맞는 서로 다른 코스가 몇 가지인지 알고 싶어 하며, 서로 다른 (n, a, h) 조합 T개에 대해 각각 그 수를 구해야 한다. 값이 매우 커질 수 있으므로 각 답을 998,244,353으로 나눈 나머지로 출력한다. 조건을 만족하는 코스가 하나도 없으면 0을 출력한다. 각 질문은 서로 독립이다.
입력
첫 줄에 질문의 수 T가 주어진다. (1 ≤ T ≤ 12,000) 이어서 T개의 줄에 각각 세 정수 n, a, h가 공백으로 구분되어 주어진다. (1 ≤ n ≤ 200,000, 0 ≤ a ≤ 200,000, -200,000 ≤ h ≤ 200,000)
출력
각 질문에 대한 답을 998,244,353으로 나눈 나머지로 한 줄에 하나씩 T줄에 출력한다.
예제 입력 1
5 4 0 0 3 1 -1 2 5 3 6 2 0 5 0 -1
예제 출력 1
2 2 0 19 0
예제 입력 2
2 1 0 1 1 0 -1
예제 출력 2
1 0
힌트 펼치기
- 경계를 건드리는 코스는 건드린 첫 지점 이후를 반사시키면 도착 고도가 -2a-2-h인 코스와 일대일 대응된다.
- 오르막 수는 (n+h)/2 이며, n+h가 홀수이거나 범위를 벗어나면 이항계수는 0이다. h < -a 이면 답은 0이다.
- 팩토리얼과 역팩토리얼을 미리 구해 두면 질문마다 O(1)에 답할 수 있다.
알고리즘 분류
조합론모듈러 연산수학풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |