문제 3466 · 비트 I
항공권 안내 봉투의 묶음
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
항공권 발권 창구에서는 여행객에게 항공권과 함께 종이 안내물을 나누어 준다. 이번에 준비한 안내물은 공항 이동 안내 카드 A장과 수하물 안내 카드 B장이다. 두 종류는 인쇄 내용이 달라 서로 바꾸어 사용할 수 없다. 담당자는 남은 안내물을 종류별로 묶어서 보관하되, 모든 묶음에 들어가는 카드 수를 같은 양의 정수 K로 맞추려고 한다. 하나의 묶음에는 한 종류의 카드만 넣는다. 따라서 공항 이동 안내 카드 묶음과 수하물 안내 카드 묶음은 따로 만들어진다. 그러나 두 종류 모두 묶음 하나에 들어가는 카드 수는 K장으로 같아야 한다. 카드를 버리거나 새로 추가할 수 없고, 두 종류의 카드 모두 한 장도 남기지 않고 전부 묶어야 한다. 이 조건을 만족하려면 A와 B가 각각 K로 나누어떨어져야 한다. 보관함에는 사용할 수 있는 띠지의 길이가 정해져 있다. 담당자는 이 띠지로 묶을 수 있는 카드 수의 하한 L과 상한 R을 미리 확인했다. 따라서 K는 L 이상 R 이하인 정수여야 한다. 하한과 상한 자체도 선택할 수 있으며, 그 사이의 정수라면 카드 수에 관한 다른 제한은 없다. 두 종류의 카드 수가 같아도 같은 규칙을 적용한다. 담당자는 보관할 묶음의 수를 줄이기 위해 조건을 만족하는 K 중 가장 큰 값을 선택하려고 한다. K가 결정되면 공항 이동 안내 카드는 A를 K로 나눈 개수의 묶음이 되고, 수하물 안내 카드는 B를 K로 나눈 개수의 묶음이 된다. 전체 묶음 수는 두 개수를 더한 값이다. 가장 큰 정수 K는 하나로 정해지므로 별도의 동점 선택 규칙은 필요하지 않다. 띠지의 허용 범위 때문에 어떤 K도 선택할 수 없는 경우가 있을 수 있다. 예를 들어 두 카드 수를 모두 나누는 수가 있더라도 그 수가 허용 범위 밖이면 사용할 수 없다. 이 경우에는 묶는 작업을 진행하지 않는다는 뜻으로 정해진 실패 값을 출력한다. 카드 수와 띠지의 허용 범위가 주어졌을 때, 선택할 K와 전체 묶음 수를 구하는 프로그램을 작성한다.
입력
첫째 줄에 정수 A, B, L, R이 공백으로 구분되어 주어진다. 1 ≤ A, B ≤ 1,000이고 1 ≤ L ≤ R ≤ 1,000이다.
출력
조건을 만족하는 가장 큰 K와 그때의 전체 묶음 수를 공백으로 구분하여 한 줄에 출력한다. 조건을 만족하는 K가 없으면 -1 -1을 출력한다.
예제 입력 1
84 126 5 20
예제 출력 1
14 15
예제 입력 2
35 50 6 10
예제 출력 2
-1 -1
예제 입력 3
96 96 12 16
예제 출력 3
16 12
힌트 펼치기
- 허용 범위의 큰 수부터 두 카드 수를 모두 나누는지 확인한다.
관련 서재 장
알고리즘 분류
정수론약수완전 탐색풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |