최대공약수 합
시간 제한2초메모리 제한1024 MB
n개의 수로 이루어진 중복집합을 k개의 비어 있지 않은 그룹으로 나눌 때 각 그룹의 최대공약수 합을 최대로 만드는 값을 k = 1부터 n까지 모두 구한다. n은 500000 이하이고 각 수는 10^12 이하다.
문제
정수 개로 이루어진 다중집합이 주어진다. 같은 수가 여러 번 나올 수 있다. 이 다중집합을 비어 있지 않은 개의 그룹으로 나누면 모든 원소는 정확히 한 그룹에 속한다. 그룹마다 원소의 최대공약수를 구한 다음, 구한 값을 모두 더한다.
각각에 대해 이렇게 얻을 수 있는 합의 최댓값을 구하라.
입력
첫째 줄에 다중집합의 크기 이 주어진다 ().
둘째 줄에 수열을 이루는 양의 정수 개가 주어진다. 각 정수는 이하이다.
출력
개의 줄을 출력한다. 번째 줄에는 다중집합을 개의 그룹으로 나눌 때 최대공약수의 합이 가질 수 있는 최댓값을 출력한다.
힌트
수열이 이면 의 최적 분할은 과 이고 합은 이다. 의 최적 분할은 , , 이고 합은 이다.