소인수 거리
시간 제한3초메모리 제한128 MB
수열의 각 원소에 대해 소인수 곱셈·나눗셈 한 번으로 정의되는 거리를 최소로 만드는 다른 원소를 찾고, 동률이면 가장 작은 번호를 출력한다.
문제
양의 정수 사이의 거리를 다음과 같이 정의한다. 한 번의 연산은 어떤 수에 소수를 곱하거나, 그 수를 나누어떨어지게 하는 소수로 나누는 것이다. 두 양의 정수 와 의 거리 는 를 로 바꾸는 데 필요한 최소 연산 횟수이다. 예를 들어 이다.
함수 는 실제로 거리의 성질을 만족한다. 모든 양의 정수 , , 에 대하여 다음이 성립한다.
- 자기 자신과의 거리는 이다: .
- 거리는 대칭이다: .
- 삼각 부등식이 성립한다: .
개의 양의 정수로 이루어진 수열 이 주어진다. 각 에 대하여 이면서 를 가장 작게 하는 인덱스 를 구해야 한다.
입력
첫째 줄에 정수 ()이 주어진다. 이어지는 개의 줄에는 각각 정수 ()가 한 줄에 하나씩 주어진다.
출력
정확히 개의 줄을 출력하며, 각 줄에 정수 하나를 출력한다. 번째 줄에는 , 이고 가 최소가 되는 인덱스 중 가장 작은 값을 출력한다. 즉 까지의 거리가 최소가 되는 인덱스들 가운데 가장 작은 인덱스를 출력한다.