DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

I Hate Orbital

Back to problem

Editorial

정수 xxx의 소인수분해에서 지수가 홀수인 소수들의 곱을 s(x)s(x)s(x)라고 하자. 예를 들어 x=s(x)q2x=s(x)q^2x=s(x)q2가 되며, s(x)s(x)s(x)는 제곱 인수를 가지지 않는다.

xxx가 오비수일 필요충분조건은 s(x)=2s(x)=2s(x)=2이다. 또한 두 수 x,yx,yx,y에 대해 xyxyxy가 오비수일 필요충분조건은 s(x)s(x)와 가 소수 의 포함 여부만 다르고 나머지 소수의 포함 여부가 모두 같은 것이다. 따라서 일 때 충돌하는 값은 가 짝수이면 , 홀수이면 이다.

먼저 s(Ai)=2s(A_i)=2s(Ai​)=2인 원소는 혼자서도 오비수이므로 반드시 지워야 한다. 나머지 원소들은 같은 s(Ai)s(A_i)s(Ai​) 값을 가진 원소끼리는 서로 충돌하지 않고, 와 위에서 정의한 짝 값 사이에서만 충돌한다. 그러므로 각 쌍마다 두 그룹 중 하나의 그룹만 남길 수 있으며, 더 작은 그룹을 지우는 것이 최적이다.

모든 AiA_iAi​를 소인수분해하여 s(Ai)s(A_i)s(Ai​)를 구하고, 각 값의 개수를 센다. s(Ai)=2s(A_i)=2s(인 원소 수를 답에 더한 뒤, 남은 값들을 아직 처리하지 않은 쌍끼리 묶어 각 쌍의 작은 개수를 답에 더하면 된다.

Ai≤109A_i \leq 10^9Ai​≤109이므로 Ai\sqrt{A_i}A 이하의 소수들로 충분히 소인수분해할 수 있다. 시간 복잡도는 이고, 메모리 복잡도는 이다.

Solution written by GPT5.5

s(x)
s(y)s(y)s(y)
222
s(x)=ts(x)=ts(x)=t
ttt
t/2t/2t/2
2t2t2t
tt
t
Ai​
)
=
2
i
​
​
O(Nπ(109))O(N\pi(\sqrt{10^9}))O(Nπ(109​))
O(N)O(N)O(N)