D. Many Perfect Squares
어떤 두 쌍을 보려는 생각은 했는데 식을 전개를 못시켰다. 에디토리얼을 보자.
어떤 두 쌍에 대해 i<j, ai+x와 aj+x 가 완전제곱수가 될 수 있는지 보자.
ai+x=p2, aj+x=q2 가 된다고 하자.
aj−ai=q2−p2=(q−p)(q+p) 이다.
이는 q−p가 aj−ai의 양의 약수임을 보인다.
aj−ai의 모든 약수들을 O(aj−ai) 에 순회할 수 있다.
어떤 약수 d에 대해 단순한 p,q에 대한 이차연립방정식을 풀어보자.
⎩⎨⎧q−p=dq+p=daj−ai
이걸 풀면
아니 진짜 연립방정식을 푸는 문젠지 몰랐다;
⎩⎨⎧p=21(daj−ai−d)q=21(daj−ai+d)
이다.
만약 p,q 모두 정수라면 우린 x의 후보로 p2−ai와 q2−aj 를 포함할 수 있다.
이걸 모두 브루트포스로 돌려버리면 된다.
시간복잡도를 좀 보자.
O(n2⋅109⋅n⋅log1018) 정도이다. 제곱수인지는 이분탐색으로 찾아주면 된다.
Comments