만드는 중입니다

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

거의 항상

시간 제한2초메모리 제한1024 MB

요약
2e9 이하의 무작위 정수 n개가 주어질 때, a_i가 a_j를 나누는 서로 다른 두 인덱스 i와 j를 출력한다. n이 크면 이런 쌍이 존재하지 않을 확률은 무시할 수 있다.
난이도

보통10점 중 4점

유형
정렬, 수학, 정수론, 완전 탐색
정답자
아직 제출이 없습니다

문제

오늘 확률론 수업에서는 높은 확률로 일어나는 확률적 사건을 다루었다. 친구에게 설명하듯이 말하자면, 어떤 매개변수 nn이 무한대로 갈 때 이 사건의 확률이 11로 간다는 뜻이다.

높은 확률로 일어나는 사건의 예로는 다음이 있다. 11과 2⋅1092\cdot 10^9 사이의 독립적인 균등 랜덤 정수 nn개가 주어졌을 때, 한 원소가 다른 원소를 나누는 두 원소가 존재한다.

친구는 이것을 믿지 않는다. 어느 수도 다른 수를 나누지 않는 예를 쉽게 많이 만들 수 있기 때문이다. {109+1,109+2,…,2⋅109}\{10^9+1, 10^{9}+2, \dots, 2\cdot 10^9\}의 임의의 부분집합을 잡으면, 그중 어느 수도 다른 수를 나누지 않는다!

친구를 설득하기 위해, 정확히 100100개의 문제 인스턴스에 대해 서로를 나누는 두 원소를 찾을 수 있음을 보여 주려 한다. n=5⋅105n=5\cdot 10^5일 때 인스턴스당 실패 확률이 10−2510^{-25}보다 작으므로 성공할 것이라 확신한다.

입력

입력은 다음과 같다.

  • 정수 nn 하나가 주어지는 한 줄. 이는 리스트에 있는 정수의 개수이다.
  • {1,2,…,2⋅109}\{1, 2, \ldots, 2\cdot 10^9\}에서 균등하게 뽑은 nn개의 독립적인 랜덤 정수 a1,…,ana_1, \ldots, a_n이 주어지는 한 줄.

제출한 코드는 정확히 100100개의 테스트 케이스에 대해 실행되며, 모두 n=5⋅105n=5\cdot 10^5이다. 예제는 더 작으며 설명을 위한 것이다.

각 제출은 새로운 랜덤 테스트 케이스에 대해 실행된다.

출력

aia_{i}가 aja_{j}를 나눈다는 것을 나타내는 서로 다른 두 정수 ii와 jj를 출력한다.

예제2

  1. 예제 1

    입력
    10
    4 9 8 10 5 28 3 62 9 17
    
    예상 출력
    5 4
    
  2. 예제 2

    입력
    10
    7 48 17 43 97 26 85 10 26 9
    
    예상 출력
    3 7