Skip to content
CatBus
Go back

[BOJ] 약수 - 1037 (B1)

시간 제한메모리 제한
2 초512 MB

문제

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

출력

첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.sㄴ

풀이

주어지는 A가 약수이므로 이들을 모두를 약수로 가지는 수 N를 구하기 위해서 굳이 모든 A를 확인하며 계산할 필요는 없다. 곱했을 때 N이 되도록 하는 약수들의 쌍을 찾아내기만 하면 되기 때문이다.

내가 생각했을 때 가장 쉬운 방법은 주어진 약수들 중 최소값과 최대값을 찾아 곱하는 것이다. 모든 약수들 중에서 최소와 최대로 만든 쌍은 곱했을 때 항상 이 약수들을 포함하는 수가 된다.

코드

n = int(input())
div = list(map(int, input().split()))
min, max = float('inf'), float('-inf')
for d in div:
    if min > d : min = d
    if max < d : max = d
print(min * max)

Share this post:

비슷한 글

1037이 글—

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
[BOJ] 좌표 정렬 1, 2 - 11650, 11651 (S5)
Next Post
[BOJ] 어린 왕자 - 1004 (S3)