Diamond/Diamond V(2)
-
BOJ 29150 - 기초적인 문제 (Python3)
SUAPC 2023 Summer B번 문제이며, 내가 출제한 세 번째 문제이다. 출제 여담은 SUAPC 2023 Summer 출제 후기에 충분히 썼으니 이번에는 이 문제의 수학적인 해결법에 대해 논하고자 한다. 에디토리얼에 있는 풀이 두 가지 대신 출제 때부터 마음 속에 품고 있었던 야매 풀이 하나와 어제 생각해 낸 제4의 풀이 이렇게 두 가지로. 그럼 본격적으로 풀이에 돌입해 보자. 문제 행렬식은 선형대수학에서 다루는 기초적인 대상 중 하나이다. 이항계수는 조합론에서 다루는 기초적인 대상 중 하나이다. 두 기초적인 대상을 섞은 문제는 기초적이므로, 다음 행렬의 행렬식을 구하는 문제는 기초적인 문제이다. $$A(a_1,a_2,\cdots,a_N)=\left({a_i\choose {j-1}}\right)_..
2023.09.10 -
BOJ 4149 - 큰 수 소인수분해 (Python3)
아마 모두의 첫 다이아몬드 티어가 아닐까. 소수 판정법과 소인수분해에 관해서는 거의 마법이나 다름없는 두 가지 알고리즘을 잘 쓰면 된다. 밀러-라빈 소수판정법과 폴라드-로 소인수분해 알고리즘. 작동 방식만 알고 있으면 그리 어렵지 않게 풀 수 있다. 그 작동 방식을 이해하는 것이 최소 다이아몬드라는 것은 잊어 두자. 그럼 본격적으로 풀이에 돌입해 보자. 문제 큰 수를 소인수분해 해보자. 입력 입력은 한 줄로 이루어져 있고, 소인수분해 해야 하는 수가 주어진다. 이 수는 1보다 크고, \(2^{62}\)보다 작다. 예제 입력) 18991325453139 출력 입력으로 주어진 양의 정수를 소인수분해 한 뒤, 모든 인수를 한 줄에 하나씩 증가하는 순서로 출력한다. 예제 출력) 3 3 13 179 271 138..
2022.12.01