본문으로 바로가기
728x90
반응형

[12번 문제]


1부터 n까지의 자연수를 차례로 더하여 구해진 값을 삼각수라고 합니다.
예를 들어 7번째 삼각수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28이 됩니다.
이런 식으로 삼각수를 구해 나가면 다음과 같습니다.

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

이 삼각수들의 약수를 구해봅시다.

 1: 1
 3: 1, 3
 6: 1, 2, 3, 6
10: 1, 2, 5, 10
15: 1, 3, 5, 15
21: 1, 3, 7, 21
28: 1, 2, 4, 7, 14, 28

위에서 보듯이, 5개 이상의 약수를 갖는 첫번째 삼각수는 28입니다.

그러면 500개 이상의 약수를 갖는 가장 작은 삼각수는 얼마입니까?

[ 번역링크 / 원본링크 ]


[코드]


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
32
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
 
using namespace::std;
 
int ans=0;
int check_div(int num)
{
    int temp = 0;
    for (int i = 1; i*<= num; i++)
    {
        if (num % i == 0)
        {
            temp++;
            if (i*!= num) temp++;
        }
    }
    return temp;
}
int main()
{
    for (int i = 1; ; i++)
    {
        ans += i;
        if (check_div(ans) >= 500)
            break;
    }
    cout << ans << endl;
    system("pause");
    return 0;
}
cs

728x90
반응형