티스토리 뷰

문제

BOJ 10916 Xtreme gcd sum

klimmek55 2019. 8. 26. 13:31

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

 

b1x1=a1b2x2=a2bnxn=angcd

=\sum^{1,000,000}_{k=1}\sum^{b_1}_{x_1=a_1}\sum^{b_2}_{x_2=a_2}\cdots \sum^{b_n}_{x_n=a_n}[\gcd(x_1,x_2,\cdots,x_n)=k]k

x_1=kx'_1,x_2=kx'_2,\cdots ,x_n=kx'_n이라고 하면,

\sum^{1,000,000}_{k=1}k\sum^{\lfloor \frac{b_1}{k}\rfloor}_{x'_1=\lceil \frac{a_1}{k}\rceil}\sum^{\lfloor \frac{b_2}{k}\rfloor}_{x'_2=\lceil\frac{a_2}{k}\rceil}\cdots \sum^{\lfloor\frac{b_n}{k}\rfloor}_{x'_n=\lceil\frac{a_n}{k}\rceil}[\gcd(x'_1,x'_2,\cdots,x'_n)=1]

=\sum^{1,000,000}_{k=1}k\sum_{d|k}\mu(d)\sum^{\lfloor \frac{b_1}{k}\rfloor}_{x'_1=\lceil \frac{a_1}{k}\rceil}[d|x'_1]\sum^{\lfloor \frac{b_2}{k}\rfloor}_{x'_2=\lceil\frac{a_2}{k}\rceil}[d|x'_2]\cdots \sum^{\lfloor\frac{b_n}{k}\rfloor}_{x'_n=\lceil\frac{a_n}{k}\rceil}[d|x'_n]

이 때 \lceil\frac{a_n}{k}\rceil=\lfloor\frac{a_n-1}{k}\rfloor+1이므로

\sum^{1,000,000}_{k=1}k\sum_{d|k}\mu(d)\sum^{\lfloor \frac{b_1}{k}\rfloor}_{x'_1=\lfloor\frac{a_1-1}{k}\rfloor+1}[d|x'_1]\sum^{\lfloor \frac{b_2}{k}\rfloor}_{x'_2=\lfloor\frac{a_2-1}{k}\rfloor+1}[d|x'_2]\cdots \sum^{\lfloor\frac{b_n}{k}\rfloor}_{x'_n=\lfloor\frac{a_n-1}{k}\rfloor+1}[d|x'_n]

=\sum^{1,000,000}_{k=1}k\sum_{d|k}\mu(d)\left(\lfloor\frac{b_1}{kd}\rfloor - \lfloor\frac{a_1-1}{kd}\rfloor)\right)\left(\lfloor\frac{b_2}{kd}\rfloor - \lfloor\frac{a_2-1}{kd}\rfloor\right)\cdots\left(\lfloor\frac{b_n}{kd}\rfloor - \lfloor\frac{a_n-1}{kd}\rfloor\right)

l=kd라고 하면

\sum^{1,000,000}_{l=1}\sum_{d|l}\frac{l}{d}\mu(d)\left(\lfloor\frac{b_1}{l}\rfloor - \lfloor\frac{a_1-1}{l}\rfloor)\right)\left(\lfloor\frac{b_2}{l}\rfloor - \lfloor\frac{a_2-1}{l}\rfloor\right)\cdots\left(\lfloor\frac{b_n}{l}\rfloor - \lfloor\frac{a_n-1}{l}\rfloor\right)

=\sum^{1,000,000}_{l=1}\phi(l)\left(\lfloor\frac{b_1}{l}\rfloor - \lfloor\frac{a_1-1}{l}\rfloor)\right)\left(\lfloor\frac{b_2}{l}\rfloor - \lfloor\frac{a_2-1}{l}\rfloor\right)\cdots\left(\lfloor\frac{b_n}{l}\rfloor - \lfloor\frac{a_n-1}{l}\rfloor\right)

\lfloor\frac{k}{l}\rfloor이 바뀌는 횟수는 2\sqrt k번 이하이므로 합치면 4000n번 정도 바뀐다. 다 저장해두려면 메모리가 좀 부족해서... 메모리를 아끼면서 바뀌는 위치를 잘 처리해주면 된다.

'문제' 카테고리의 다른 글

BOJ 19043 Balance  (1) 2022.05.15
BOJ 20418 역전의 제왕 (Hard)  (0) 2021.02.05
BOJ 1792 공약수  (0) 2019.08.22
BOJ 11691 LCM(i, j)  (0) 2019.08.21
POJ 3904 Sky Code  (0) 2019.08.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함