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

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

소수가 될 때까지 쪼개기

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

요약
N에서 시작해 합성수를 무작위 약수 쌍으로 나누는 과정을 모든 수가 소수가 될 때까지 반복할 때 필요한 평균 분할 횟수를 구합니다.
난이도

어려움10점 중 8점

유형
확률, 동적 계획법, 정수론, 수학
정답자
아직 제출이 없습니다

문제

양의 정수로 이루어진 다중집합 KK에 대해 대량 분해 연산을 정의한다. 대량 분해는 KK의 모든 원소를 동시에 처리한다. 원소 kk가 소수면 그대로 둔다. 소수가 아니면 1<d<k1 < d < k인 kk의 약수 dd를 하나 골라 kk를 dd와 k/dk/d 두 수로 바꾼다. 조건을 만족하는 약수는 모두 같은 확률로 뽑히고, 원소마다 독립적으로 뽑는다.

예를 들어 K={2,10,12,12}K = \{2, 10, 12, 12\}를 보자. 2는 소수라 그대로 남는다. 10은 1과 10 사이의 약수가 2와 5뿐이라 항상 {2,5}\{2, 5\}가 된다. 12는 약수 2, 3, 4, 6 중 하나를 각각 확률 1/41/4로 고르므로 확률 1/21/2씩으로 {2,6}\{2, 6\} 또는 {3,4}\{3, 4\}가 된다. 그래서 첫 번째 대량 분해의 결과는 확률 0.250.25로 {2,2,3,3,4,4,5}\{2, 2, 3, 3, 4, 4, 5\}, 확률 0.50.5로 {2,2,2,3,4,5,6}\{2, 2, 2, 3, 4, 5, 6\}, 확률 0.250.25로 {2,2,2,2,5,6,6}\{2, 2, 2, 2, 5, 6, 6\}이다. 마지막 결과에 두 번째 대량 분해를 하면 {2,2,2,2,2,2,3,3,5}\{2, 2, 2, 2, 2, 2, 3, 3, 5\} 하나만 나온다.

원소가 NN 하나뿐인 다중집합 {N}\{N\}에서 시작해 모든 원소가 소수가 될 때까지 대량 분해를 반복한다. 필요한 대량 분해 횟수의 기댓값을 구하여라.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤1041 \le T \le 10^4)

이어지는 TT개의 줄에 각 테스트 케이스의 시작 값 NN이 한 줄에 하나씩 주어진다. (2≤N≤10102 \le N \le 10^{10})

출력

각 테스트 케이스마다 대량 분해 횟수의 기댓값을 한 줄에 하나씩 출력한다. 값은 반올림해서 소수점 아래 여섯 자리까지 정확히 적는다. 답이 2이면 2.000000으로 출력한다.

예제2

  1. 예제 1

    입력
    3
    3
    12
    48
    
    예상 출력
    0.000000
    2.000000
    3.333333
    
  2. 예제 2

    입력
    5
    2
    4
    8
    16
    9
    
    예상 출력
    0.000000
    1.000000
    2.000000
    2.666667
    1.000000