본문 바로가기
Programming/Project Euler

프로젝트 오일러 #45 삼각수, 오각수, 육각수

by 작은별하나 2016. 5. 27.
반응형

삼각수, 오각수, 육각수라는 것은 앞에 #44(http://sdev.tistory.com/224)에서 설명한 것과 같이 도형을 그릴 때, 발생하는 점들의 갯수입니다.

 

 

이 문제에서 원하는 것은 40755 다음에 나타나는, 삼각수이자, 오각수, 그리고 육각수인 숫자를 찾는 것입니다.

 

삼각수를 기준으로 하든지, 육각수를 기준으로 하든지, 다른 숫자들을 맞추어 나가면 됩니다.

 

간단하게 공차식을 구해서 계산하는 것이 편하겠죠.

 

그래서 만들어진 소스는 다음과 같습니다.

 

 

 

#include <stdio.h>
#include <stdint.h>

int main()
{
    uint64_t t = 40755, p = 40755, h = 40755;
    uint64_t dt = 286, dp = 496, dh = 573;

    t += dt; dt++;
    while( 1 )
    {
        if( t < p ) { t += dt; dt++; }
        else if( p < t ) { p += dp; dp += 3; }
        else if( h < p ) { h += dh; dh += 4; }
        else if( t < h ) { t += dt; dt++; }
        else break;
    }
    printf("ans = %ju\n", t);
}
728x90

댓글