한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다.
1 <= 입력 개수 <= 10^4, 1 <= 입력값 <= 10^4
for _ in range(int(input())):
n = int(input())
sum_of_squares = n*(n+1)*(2*n+1) // 6
square_of_sum = (n*(n+1)//2)**2
print(square_of_sum-sum_of_squares)
이 문제는 제곱의 합 시그마 공식을 이용해 풀 수 있습니다.
1부터 N까지 제곱의 합은 다음과 같이 유도할 수 있습니다.
이를 통해 제곱들의 합을 구하고 합의 제곱을 구하면 합의 제곱이 항상 더 크기 때문에 합의 제곱에서 제곱들의 합을 뺀 값을 출력하면 됩니다.
*반복문을 써도 되지만 프로젝트 오일러 문제들은 가능하면 수학적 원리를 파악하면서 푸는 것이 더 취지 맞습니다.
'알고리즘 공부 > 프로젝트 오일러(Project Euler)' 카테고리의 다른 글
{프로젝트 오일러/Project Euler} 8. 이어진 수의 곱의 최댓값 (0) | 2021.01.04 |
---|---|
{프로젝트 오일러/Project Euler} 7. 10001번째 소수 (0) | 2021.01.03 |
{프로젝트 오일러/Project Euler} 5. 1~ N으로 나누어 떨어지는 수 (0) | 2021.01.02 |
{프로젝트 오일러/Project Euler} 4. 세자리 수를 곱해 만든 대칭수 (0) | 2021.01.01 |
{프로젝트 오일러/Project Euler} 3. 가장 큰 소인수 구하기 (0) | 2020.12.31 |