[BOJ] 14862번: 최대공약수 기댓값

https://www.acmicpc.net/problem/14862

 

맨 처음에는 prob1[i]를 gcd가 i의 배수일 확률($PQ^{-1}$), prob2[i]를 gcd가 i일 확률로 두고 $O(200000lg200000TK)$로 구했으나 시간초과가 발생했습니다.

 

그래서 mobius function을 통해 각 prob1[i]에 얼마가 곱해져야 하는지를 전처리로 계산해서 $O(200000lg200000 + 200000TK)$로 코드를 짜서 아주 간신히 통과됐습니다. 일단 $200000TK$가 왜 1.9초 가까이 걸리는지도 조금 의아하고, 수행시간이 아주 빠른 분들 코드를 봤는데 보고 나서도 오리무중이네요.

 

https://github.com/blisstoner/BOJ/blob/master/14862.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 19235번: 모노미노도미노  (2) 2020.10.10
[BOJ] 4889번: Seinfeld  (0) 2020.03.19
[BOJ] 3078번: MALCOLM  (0) 2020.02.28
[BOJ] 16409번: Coprime Integers  (0) 2020.02.25
[BOJ] 8291번: Coprime Numbers  (0) 2020.02.25
[BOJ] 12107번: 약수 지우기 게임 1  (0) 2020.02.18
  Comments