문제 4385 · 바이트 III
남김없는 묶음 포장
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
온라인 쇼핑몰이 창고에 남은 상품을 묶음 단위로 판매하려 한다. 판매 대상은 서로 다른 N종류의 상품이며, 각 종류의 재고 수량은 양의 정수로 주어진다. 쇼핑몰은 포장 규격을 단순하게 유지하기 위해 모든 상품에 하나의 묶음 크기 g를 공통으로 적용하기로 했다. 묶음 하나에는 반드시 같은 종류의 상품 g개만 들어간다. 서로 다른 종류를 섞어 하나의 묶음을 만들 수 없으며, 어느 상품에도 다른 묶음 크기를 적용할 수 없다. 예를 들어 어떤 상품의 재고가 24개이고 g가 6이면 그 상품으로 정확히 4개의 묶음을 만든다. 재고가 25개라면 같은 크기로 모두 포장할 수 없으므로 g가 6인 규격은 사용할 수 없다. 이번 판매에서는 낱개 상품과 구별되는 묶음 상품을 만들려 하므로 g는 2 이상의 정수여야 한다. 또한 판매 대상 재고를 하나도 남기지 않아야 한다. 상품을 추가로 들여오거나 일부를 제외하는 일은 없고, 포장 과정에서 상품이 사라지거나 늘어나지도 않는다. 따라서 선택한 g로 모든 종류의 재고를 각각 정확히 나눌 수 있어야 한다. 조건을 만족하는 묶음 크기가 여러 개라면 쇼핑몰은 그중 가장 큰 값을 선택한다. 이때 완성되는 묶음의 총개수도 함께 집계하려 한다. 총개수는 상품 종류별로 만들어지는 묶음 수를 모두 더한 값이며, 한 종류의 묶음을 다른 종류와 합쳐 세지 않는다. 조건을 만족하는 g가 전혀 없다면 이번 묶음 판매를 진행하지 않는다. 재고 수량을 바탕으로 선택할 묶음 크기와 총 묶음 수를 구한다.
입력
첫째 줄에 상품 종류의 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 100,000이다. 둘째 줄에 각 종류의 재고 수량을 나타내는 정수 a_1, a_2, …, a_N이 공백으로 구분되어 주어진다. 1 ≤ a_i ≤ 1,000,000,000이다.
출력
조건을 만족하는 가장 큰 묶음 크기 g와 완성되는 묶음의 총개수를 공백으로 구분하여 한 줄에 출력한다. 조건을 만족하는 묶음 크기가 없으면 0 0을 출력한다.
예제 입력 1
3 18 30 42
예제 출력 1
6 15
예제 입력 2
2 8 15
예제 출력 2
0 0
예제 입력 3
1 49
예제 출력 3
49 1
힌트 펼치기
- 모든 재고 수량을 나누어떨어지게 하는 가장 큰 정수를 생각한다.
- 묶음 크기가 정해지면 전체 재고 수량의 합으로 총 묶음 수를 구할 수 있다.
관련 서재 장
알고리즘 분류
정수론최대공약수풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |