분류 전체보기(79)
-
[BOJ 18918] 피보나치 수의 최대공약수의 합처럼 보이지만... × 25
이 문제는 두 문제를 섞은 것이다. 그들은 각각 [BOJ 13716] 피보나치 수열처럼 보이지만... 과[BOJ 17372] 피보나치 수의 최대공약수의 합 이다. 이 문제를 도전하기 전에 위 두 문제를 해결하고 오자. 앞서 포스팅에서 [BOJ 17372]를 다루었다. 그때와 같은 방식으로 본 문제에서 주어진 식을 단순화 하면n∑d=1dkFdC(d)이며 C(d)=2∑n/di=1ϕ(i)−1이다. [BOJ 17372]와 근본적인 방법은 똑같다. xudyh's sieve를 이용하여 C(d)를 빠르게 계산하고 C(d)에 n/d항이 존재한다는 특성을 이용해 O(√n)만에 문제를 해결하는 것이다. 반면, 이를 위해서는 $\sum_{d..
2024.01.22 -
Implementation of Lucy-Hedgehog algorithm
우리는 이전 글에서 Lucy-Hedgehog algorithm(이하 Lucy)에 대해 배웠다. Lucy는 다음의 점화식을 이용한다. \[S(v,p)=S(v,p−1)−(S(v/p,p−1)−S(p−1,p−1))\]우리는앞서2개의배열A,B를사용하여목표값인S(N, sqrt(N))을계산하였다.여기서확인해야할것은S(v,p)가나타내는값은2부터v까지의값중p까지에라토스테네스의체를돌렸을때걸러지지않은값들의개수라는것이다.최적화를위해서우리는\sqrt{N}\le yp인경우만계산하면된다.우리가계산해야할것은S(N/i, p)이다.따라서i\le N/p^{2}를만족한다.또한,우리는v> y인경우만을고려하므로i\le N/..
2024.01.22 -
x2+xy+y2꼴 자연수
우리가 어떤 자연수 n이 주어져 있고 이 n이 x2+xy+y2(x,y∈Z)로 나타내질 수 있는지 알고싶다. 그러기 위해서는 먼저 어떤 소수 p가 x2+xy+y2인지 알아보자. Lemma 1. 소수 p에 대하여 p=x2+xy+y2(x,y∈Z) iff p\equiv 1\pmod{3}거나 p=3이다. (pf) (\Rightarrow) x가 3의 배수라고 가정하자. 만약 3|y이면 p가 소수라는 가정에 모순이다. 따라서 3\nmid y이고 p\equiv 1\pmod{3}이다. x,y가 3의 배수가 아니라고 가정하자. 그럼 x,y는 3으로 나눈 나머지가 1,2중 하나가 될 것이다..
2023.09.02 -
[BOJ 1335] 여섯 쌍 서로소
구해야 하는 것은 \sum_{(a,b)}\sum_{(c,d)}\sum_{(e,f)}[ \gcd(Y_{a,b},Y_{c,d},Y_{e,f})=1] 이다. 뫼비우스 역변환을 이용하면 \sum_{s=1}^{359999}\mu(s)\sum_{(a,b)}\sum_{(c,d)}\sum_{(e,f)}[s|Y_{a,b}][s|Y_{c,d}][s|Y_{e,f}] 이다. 그럼 우리는 Y_{a,b}이 각각 어떤 값을 가지고 얼마나 많은 중복이 일어나는지 세면 답을 구할 수 있다. 문제에서 Y_{a,b}=X_{a}\times X_{b}\pmod{359999}이다. 즉, X_{a}들의 범위는 0~359998이라 생각해도 무방하다. 특히, 359999 = 599 \times 601로 CRT를 이용..
2023.08.24 -
[BOJ 20704] Find a Square
문제를 접근하는 방법은 각 소수q에 대해서 ax^{2}+bx+c \equiv 0\pmod{q}를 만족하는 x를 찾는 것이다. 그럼 소수 q는 어느 범위까지 검사해야할까? 문제에서 구하라고 하는 것은 주어진 곱을 나누는 제곱수이다. 적절한 커팅을 이용해서 확인해 봐야 하는 소수의 개수를 줄이도록 하자. (an^{2}+bn+c)^{1/3}보다 작은 소수들을 모두 검사한다고 하자. 어떤 수 x가 어떤 자연수 k에 대해서 ax^{2}+bx+c=p\cdot k를 만족한다고 하자, 그럼 에라토스테네스의 체처럼 (an^{2}+bn+c)^{1/3} 보다 작은 소수들로 각 p(x)들을 나누자. 남은 p(x)들은 (an^{2}+bn+c)^{1/3}보다 큰 소수 2개의 곱으로 이루..
2023.08.11 -
[BOJ 23453] Dirichlet k-th root
굉장히 멋진 아이디어를 사용하는 문제!! 정말 멋진 문제!! 우리는 Dirichlet convolution을 modulo p에 대해서 계산한다는 것을 관찰하자. 이때 다음을 생각한다. Lemma. 모든 산술 함수 f:\{1,\cdots,n\}\rightarrow \mathbb{Z}에 대해서 2^{p}>n이면 f^{p}\equiv \epsilon \pmod{p}이다. Proof. 함수 f^{p}는 다음과 같다. f^{p}(n)=\sum_{a_{1}\cdots a_{p}=n}f(a_{1})\cdots f(a_{p}) 이때 summation 아래의 조건을 만족하는 튜플 (a_{1},\cdots,a_{p})를 고려하자. 하나의 튜플을 찾았다면 permutation을 통해 다른 튜플을 찾..
2023.08.11