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