본문으로 이동
코드패스 by Devin.KR

문제 3810 · 바이트 III

버스 노선의 공통 점검 간격

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 버스 운행 모형에는 N개의 순환 노선이 있다. 각 노선의 버스는 출발 지점을 떠나 정해진 시간만큼 운행한 뒤 같은 지점으로 돌아오며, 돌아온 즉시 다음 순환을 시작한다. 모든 버스는 시각 0에 동시에 출발하고, 각 노선의 한 바퀴 운행 시간은 양의 정수 분으로 주어진다. 운행 시간은 반복해도 달라지지 않으며, 대기 시간은 없다. 운영자는 모든 노선에 같은 간격의 자동 점검 신호를 적용하려 한다. 점검 간격을 양의 정수 d분으로 정하면 신호는 시각 d, 2d, 3d와 같이 d의 양의 정수 배수인 시각에 발생한다. 시각 0은 운행 시작을 나타내는 기준이며, 점검 신호를 세는 대상에는 포함하지 않는다. 신호는 모든 노선에 동시에 전달되지만, 실제 점검 장치의 동작 시간은 고려하지 않는다. 사용할 수 있는 간격에는 한 가지 필수 조건이 있다. 각 노선의 버스가 한 바퀴를 마치고 출발 지점으로 돌아오는 모든 시각에 반드시 점검 신호가 발생해야 한다. 반대로 버스가 운행 중일 때 추가 신호가 발생하는 것은 허용한다. 서로 다른 노선의 운행 시간이 같아도 각 노선에 이 조건을 그대로 적용한다. 모든 노선이 매번 동시에 돌아올 필요는 없으며, 한 노선의 귀환 시각에 다른 노선의 버스가 운행 중이어도 괜찮다. 장치 설정 범위 때문에 d는 A 이상 B 이하의 정수여야 한다. 두 경계값도 선택할 수 있는 값에 포함된다. 운영자가 검토할 수 있도록 이 범위에서 필수 조건을 만족하는 서로 다른 간격의 개수를 구하고, 그 가운데 가장 큰 간격도 함께 구한다. 같은 간격은 여러 노선에 사용할 수 있더라도 한 번만 센다. 가능한 간격이 하나도 없다면 개수는 0, 가장 큰 간격은 -1로 출력한다. 버스의 실제 운행을 시간순으로 모의 실행할 필요 없이 주어진 운행 시간으로 답을 구한다.

입력

첫째 줄에 정수 N, A, B가 공백으로 구분되어 주어진다.
1 ≤ N ≤ 30,000이며 1 ≤ A ≤ B ≤ 1,000,000,000이다.
둘째 줄에 각 노선의 한 바퀴 운행 시간 T₁, T₂, …, Tₙ이 공백으로 구분되어 주어진다. 각 Tᵢ는 1 이상 1,000,000,000 이하의 정수다. 운행 시간이 같은 노선이 있을 수 있다.

출력

조건을 만족하는 서로 다른 점검 간격의 개수와 그 가운데 가장 큰 간격을 공백으로 구분하여 한 줄에 출력한다. 가능한 간격이 없다면 0 -1을 출력한다.

예제 입력 1

3 3 20
72 120 168

예제 출력 1

5 12

예제 입력 2

2 5 10
18 30

예제 출력 2

1 6

예제 입력 3

3 2 100
35 64 81

예제 출력 3

0 -1
힌트 펼치기
  • 어떤 노선의 모든 귀환 시각에 신호가 발생하려면 첫 번째 귀환 시각에 대해 어떤 조건이 필요할지 생각한다.
  • 모든 운행 시간의 최대공약수를 구한 뒤, 그 수의 약수를 두 개씩 짝지어 조사할 수 있다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류정수론최대공약수약수

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)