2018. 10. 9. 01:08, 알고리즘/Codeforces
http://codeforces.com/contest/1033
A - King Escape (Code)
다행히 체스를 많이 해봤어서 퀸으로 갈라지는 사분면 내에 같이 위치하기만 하면 된다는 사실을 빨리 캐치했습니다. N이 그다지 크지 않아 Flood fill을 해도 됩니다.
B - Square Difference (Code)
$a^2 - b^2$ = $(a+b)(a-b)$이므로 a-b가 1이 아니면 절대 소수가 아니고, a-b가 1이면 a+b가 소수인지를 확인하면 됩니다.
C - Permutation Game (Code)
DP의 순서를 잘 정해줘야 합니다. $a[i]$가 큰 것 부터 처리를 하면 됩니다.
D - Divisors (Code)
약수가 3/4/5개인 수는 반드시 $p^2, p^3, p^4, pq$중 하나의 형태입니다. 주어진 수가 $p^2, p^3, p^4$일 경우는 binary search로 p를 찾아낼 수 있는데 $pq$일 경우에는 수가 많이 크기 때문에 인수분해가 쉽지 않습니다. 그렇기 때문에 $pq$ 형태의 수들을 전부 모은 뒤, 그들끼리의 최대공약수를 확인해 소인수를 최대한 뽑아내고, 이 과정에서 소인수분해가 불가능한 수들은 다른 수들에서 쓰이지 않는 유일한 소수 2개의 곱으로 이루어져있음을 알 수 있습니다.
D번에서 중복되는 수를 생각하지 못해 한 번 hack을 당하긴 했지만 그래도 굉장히 잘 풀렸네요.
'알고리즘 > Codeforces' 카테고리의 다른 글
[Codeforces] Round #518 Div. 1 (0) | 2018.11.26 |
---|---|
[Codeforces] Round #517 Div. 1 (2) | 2018.10.22 |
[Codeforces] Mail.Ru Cup 2018 Round 1 (0) | 2018.10.19 |
[Codeforces] Round #511 (Div. 1) (0) | 2018.09.22 |
[Codeforces] Round #509 (0) | 2018.09.19 |
[Codeforces] Educational Round 50 (0) | 2018.09.13 |
Comments