만드는 중입니다

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

바이트몬 수집가 2

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

요약
각 카드마다 진화 전 또는 진화 후 전투력을 하나씩 골라, 고른 값들의 최대공약수가 가장 커지는 값을 구합니다.
난이도

보통10점 중 6점

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

문제

바이타자르는 바이트몬 카드를 아주 많이 모았다. 각 카드에는 바이트몬이 그려져 있고, 진화 전 힘과 진화 후 힘이 적혀 있다. 그는 이 컬렉션을 팔려고 한다. 바이트코비트코 카드 거래 협정에 따르면 컬렉션의 가격은 덱에 있는 모든 바이트몬 힘의 최대공약수(NWD)에 비례한다. 다만 이 협정은 힘이 두 개인 카드를 고려하지 않았다. 그래서 바이타자르는 카드마다 진화 전 힘이나 진화 후 힘 중 하나를 고를 수 있다. 그는 최대공약수가 가장 커지도록 고르려 한다. 그가 팔 수 있는 최고 가격을 구하는 프로그램을 작성하라.

입력

첫째 줄에 정수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다. 바이타자르가 가진 카드의 수다. 이어지는 nn개 줄에는 두 정수 aia_i와 bib_i (1≤ai≤5⋅1051 \le a_i \le 5 \cdot 10^5, 1≤bi<2631 \le b_i < 2^{63})가 공백 하나로 구분되어 주어진다. 각각 i번째 바이트몬의 진화 전 힘과 진화 후 힘이다. 진화 후 힘은 진화 전 힘보다 작을 수도 있다.

출력

바이타자르가 얻을 수 있는 바이트몬 힘의 최대공약수 중 최댓값을 한 줄에 출력한다.

힌트

예시에서 바이타자르는 세 번째와 네 번째 바이트몬은 진화 후 힘을, 첫 번째와 두 번째 바이트몬은 진화 전 힘을 고른다. 그러면 힘은 차례로 5, 10, 20, 5가 되고, 이들의 최대공약수는 5이다.

예제1

  1. 예제 1

    입력
    4
    5 7
    10 15
    13 20
    7 5
    
    예상 출력
    5