- 중복된 소수가 나올 수 있다. 이 경우를 고려하지 않으면 출력 초과 오류가 발생하게 된다.
- 처음에 출력 초과가 발생해서 무엇이 문제인지 확인하고자 질문게시판을 참고했는데 다음 반례가 나와있어서 어디가 문제인지 알 수 있었다.
입력
5
2 2 2 2 2
출력
2
- 즉, 소수 2가 5번이 있다고 해서 32를 출력하는 것이 아니라 2를 출력해야 AC를 받는다. 그러려면 중복을 제거하는 방법인
set()
를 사용해야한다.
import sys
input = sys.stdin.readline
N = int(input())
arr = set(map(int, input().strip().split()))
is_prime = [True] * 1000001
is_prime[0] = False
is_prime[1] = False
for i in range(2, len(is_prime)):
if is_prime[i]:
for j in range(i*i, len(is_prime), i):
is_prime[j] = False
result = 1
for i in arr:
if is_prime[i]:
result *= i
if result == 1:
print(-1)
else:
print(result)