티스토리 뷰

문제

CodeChef Simple Sum

klimmek55 2019. 8. 19. 19:43

https://www.codechef.com/NOV15/problems/SMPLSUM

 

틀린 부분이 있을 것 같기도 하지만 일단 내가 이해한대로 적어본다.

$$\sum ^n _{i=1}\frac{n}{\gcd (i,n)}=\sum_{k|n}\sum ^n _{i=1}[\gcd(i,n)=k]\frac{n}{k}$$

\(i=ak\)라고 하면,
$$\sum_{k|n}\sum ^{\frac{n}{k}} _{a=1}[\gcd(a,\frac{n}{k})=1]\frac{n}{k}=\sum_{k|n}\sum ^{\frac{n}{k}} _{a=1}\sum _{d|\gcd(a, \frac{n}{k})} \mu(d) \frac{n}{k}=\sum_{k|n}\sum ^{\frac{n}{k}} _{a=1}\sum ^{\frac{n}{k}} _{d=1} [d|a][d|\frac{n}{k}]\mu(d)\frac{n}{k}$$

$$=\sum_{k|n}\frac{n}{k}\sum^{\frac{n}{k}}_{d=1}[d|\frac{n}{k}]\mu(d)\sum^{\frac{n}{k}}_{a=1}[d|a]=\sum_{k|n}\frac{n}{k}\sum^{\frac{n}{k}}_{d=1}[d|\frac{n}{k}]\mu(d)\frac{n}{kd}=\sum_{k|n}\frac{n}{k}\sum_{d|\frac{n}{k}}\mu(d)\frac{n}{kd}=\sum_{k|n}\frac{n}{k}\phi(\frac{n}{k})=\sum_{k|n}k\phi(k)$$

가 되므로 문제에서 구해야 하는 것은 \(n\)의 모든 약수 \(k\)에 대해서 \(k\phi(k)\)의 합과 같다.

\(n\)이 어떤 소인수 \(p\)가 있어서 \(n=p^em\)이면(\(m\)은 \(p\)의 배수가 아니여야 한다. = \(e\)는 최대한 커야한다.), 

$$\sum_{k|n}k\phi(k)=\sum^e _{\alpha=0}\sum_{k|m}kp^\alpha \phi(kp^\alpha)=\sum^e_{\alpha=0}\sum_{k|m}k\phi(k)p^\alpha\phi(p^\alpha)=\left(\sum^e_{\alpha=0}p^\alpha\phi(p^\alpha)\right)\left(\sum_{k|m}k\phi(k)\right)$$

이므로 같은 방식으로 \(n\)을 소인수분해해서 각 소인수별로 \(\sum^e_{\alpha=0}p^\alpha\phi(p^\alpha)\)을 구한 뒤 곱해주면 된다.

 

중간에 \(\frac{n}{k}\)들을 다 \(k\)로 바꿔야 보기 좋을 것 같다...

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

BOJ 11691 LCM(i, j)  (0) 2019.08.21
POJ 3904 Sky Code  (0) 2019.08.21
BOJ 16011 Min Max Tree  (0) 2019.05.24
BOJ 2066 카드놀이  (0) 2019.02.18
BOJ 1739 도로 정비하기  (0) 2019.01.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함