BOJ

[BOJ][Python] 백준 29537번 - Большая сумма

송댕 2025. 6. 17. 00:58
728x90

문제 링크: https://www.acmicpc.net/problem/29537


문제 풀이

오일러 피 함수, 유클리드 호제법, 정수론

 

지문에서 간단하게 $\sum\limits_{d|n}{\sum\limits_{i = 1}^n{\mathrm{gcd}(d, i)}}$만 구하면 된다고 적혀져있다. 하지만 $n$은 $10^{12}$이므로 나이브하게 돌아가진 않을거니 식 정리를 해야한다. 먼저 시그마를 바꿔치기 해보자. $$ \sum_{i=1}^{n} \left( \sum_{d \mid n} \gcd(d, i) \right) $$

이제 $\sum_{d \mid n} \gcd(d, i)$를 잘 변환하면 된다.

우리는 약수 $d$를 고정하고 계산하는게 아니라 $i$를 고정하고 약수 $d$를 바꿔가며 푸는 것으로 바뀐다.

그러면 저 안의 값이 약수 $d$와 $i$의 최대공약수를 묻고 있는데, \( \gcd(d, i) \)

 

 

코드

728x90