만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

BARMAN

시간 제한1초메모리 제한128 MB

요약
숨겨진 n에 대한 숨겨진 값들의 위수 m_i만 주어졌을 때, 최대 2k번의 구간 곱셈 연산으로 최종 합의 위수의 최악의 경우 보장값을 최대화한다.
난이도

어려움10점 중 9점

유형
정수론, 수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

바이티흐 교수는 임의의 정수 NN을 법으로 하는 산술 수열을 연구한다. 정수 aa에 대하여 nn을 법으로 하는 위수(order)란 a⋅ma \cdot m이 nn으로 나누어떨어지는 가장 작은 정수 m>0m > 0을 뜻하며, 이는 m=n/gcd⁡(a,n)m = n / \gcd(a, n)과 같다.

바이티흐는 kk개의 정수 a1,a2,…,aka_1, a_2, \dots, a_k와 법 nn을 비밀리에 정해 두고, 각 aia_i의 nn에 대한 위수 mim_i만 알려 준다. 당신은 이후 여러 연산을 요청할 수 있으며, 최대 2k2k번까지 요청할 수 있다. 한 번의 연산은 연속한 구간과 상수 cc를 골라, 그 구간에 속한 모든 원소 al,al+1,…,ara_l, a_{l+1}, \dots, a_r에 cc를 곱한다. 모든 연산이 적용된 뒤, 바이티흐는 합 a1+a2+⋯+aka_1 + a_2 + \dots + a_k의 nn에 대한 위수만큼의 금액을 B$ 단위로 지불한다.

바이티흐는 인색하다. 그는 당신이 요청한 모든 연산을 확인한 뒤에야 법 nn과 실제 값 a1,…,aka_1, \dots, a_k를 확정하며, 알려 준 위수 mim_i와 모순되지 않는 범위에서 항상 지불액이 최소가 되도록 고른다.

바이티흐가 이후 nn과 값 aia_i를 어떻게 고르더라도 당신이 확실히 보장받을 수 있는 최대 지불액을 구하라.

입력

첫째 줄에 정수 kk가 주어진다 (1≤k≤1001 \le k \le 100).

둘째 줄에 kk개의 정수 m1,m2,…,mkm_1, m_2, \dots, m_k가 주어진다 (1≤mi<2641 \le m_i < 2^{64}). mim_i는 aia_i의 nn에 대한 위수이다.

출력

당신이 보장받을 수 있는 최대 지불액을 B$ 단위의 정수 하나로 출력하라. 이는 바이티흐가 이후 주어진 위수와 모순되지 않게 법 nn과 값 aia_i를 어떻게 고르더라도 성립해야 한다.

이 값은 매우 커질 수 있으므로(자릿수가 수천에 이를 수 있음) 큰 수 연산으로 전체 자릿수를 그대로 출력하라.

예제3

  1. 예제 1

    입력
    3
    6 10 15
    
    예상 출력
    30
    
  2. 예제 2

    입력
    2
    4 6
    
    예상 출력
    12
    
  3. 예제 3

    입력
    3
    2 4 8
    
    예상 출력
    8