DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

오비탈이 싫어

문제로 돌아가기

해설

정수 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)