아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

신성한 약수

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

요약
곱이 N이 되는 n개의 수가 주어질 때, 어떤 약수의 최대 중복도와 그 중복도를 달성하는 약수의 개수를 구한다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 조합론
정답자
아직 제출이 없습니다

문제

N>1N > 1인 정수가 주어진다. 정수 d>1d > 1에 대해, dk∣Nd^k \mid N이면서 dk+1∤Nd^{k+1} \nmid N을 만족하는 양의 정수 kk가 존재할 때 "dd는 NN의 중복도가 kk인 약수"라고 한다. 예를 들어 N=48=24⋅3N = 48 = 2^4 \cdot 3의 경우 22는 중복도가 44인 약수, 33은 중복도가 11인 약수, 44는 중복도가 22인 약수, 66은 중복도가 11인 약수이다.

dd가 NN의 중복도가 kk인 약수이면서 NN의 모든 약수 중 kk보다 큰 중복도를 가지는 약수가 없을 때, dd를 NN의 신성한 약수라고 한다. 다시 말해 신성한 약수는 NN의 모든 약수가 가지는 중복도의 최댓값을 달성하는 약수이다. 예를 들어 4848의 신성한 약수는 22 (중복도 44) 하나뿐이고, 66의 신성한 약수는 22, 33, 66 (각각 중복도 11)이다.

NN의 모든 약수가 가지는 중복도의 최댓값 kk와 NN의 신성한 약수의 개수를 구하라.

입력

NN은 다소 특이한 방식으로 주어진다. 첫 번째 줄에는 정수 nn (1≤n≤6001 \le n \le 600)이 주어진다. 두 번째 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (2≤ai≤10182 \le a_i \le 10^{18})이 공백 하나로 구분되어 주어진다. 이들은 N=a1⋅a2⋅⋯⋅anN = a_1 \cdot a_2 \cdot \cdots \cdot a_n을 뜻한다.

출력

두 줄을 출력한다. 첫 번째 줄에는 NN의 어떤 약수 d>1d > 1이 dk∣Nd^k \mid N을 만족하도록 하는 가장 큰 정수 kk를 출력한다. 두 번째 줄에는 NN의 신성한 약수의 개수, 즉 중복도가 kk인 약수의 개수를 출력한다. 이 값은 매우 커질 수 있으므로 정확한 정수로 출력한다.

예제3

  1. 예제 1

    입력
    3
    4 3 4
    
    예상 출력
    4
    1
    
  2. 예제 2

    입력
    2
    2 3
    
    예상 출력
    1
    3
    
  3. 예제 3

    입력
    1
    1000000000000000000
    
    예상 출력
    18
    3