본문 바로가기
알고리즘 문제 & 프로그래밍/C++

[C++]프로젝트 오일러 6번 문제&풀이 (1부터 100까지 "제곱의 합"과 "합의 제곱"의 차는?)

by 달슬 2020. 11. 19.
반응형

문제 6번

1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).

12 + 22 + ... + 102 = 385

1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).

(1 + 2 + ... + 10)2 = 552 = 3025

따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.

그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까?

 

접근방법

1. 1부터 100까지 제곱의 합과 합의 제곱을 각각 구한다.

2. 구한 값의 차의 절대값이 우리가 구하고자 하는 값이다.

   (아무리 생각해도 쉬어가는 문제인 것 같다ㅎㅎ)

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int num_i = 0;
    int num_j = 0;
    int num_k = 0;

    for (int i = 1; i <= 100; i++)
    {
        num_i += i;
    }
    num_i = pow(num_i, 2);

    for (int j = 1; j <= 100; j++)
    {
        num_j += pow(j, 2);
    }

    num_k = abs(num_i - num_j);

    //cout << num_i << endl;
    //cout << num_j << endl;
    cout << num_k << endl;

    return 0;
}

참고

https://github.com/mannlim/ProjectEuler

 

mannlim/ProjectEuler

How to solve Project Euler using by C++. Contribute to mannlim/ProjectEuler development by creating an account on GitHub.

github.com

반응형

댓글