본문 바로가기
Programming/Project Euler

34. 프로젝트 오일러 #34 : 자릿수의 팩토리얼 합

by 작은별하나 2015. 4. 13.
반응형

연달아서 난이도 5% 정도의 문제네요.


이번 문제는 각각의 자릿수의 팩토리얼 합이 자신이 되는 숫자를 찾는 것입니다.


예를 들어서 145란 숫자는,




가 됩니다.  이번 문제는 이와 비슷한 숫자들의 합을 구하는 것입니다.


이제 프로젝트 오일러를 이정도까지 진행하셨다면, 십진수의 자릿수를 빼는 것에는 다들 어느정도 경험이 있을 것이라 생각합니다.


제 경우에는 각 자릿수의 팩토리얼 값을 미리 저장해서 사용했습니다.

9! = 362880 이므로, 대충 6자릿수자일거라고 생각하면 됩니다.  그래서 숫자범위를 그렇게 정했습니다.


제가 작성한 프로그램은 다음과 같습니다.


#include <stdio.h>

int main()
{
    int facts[10] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 36280 };

    int sum = 0;
    for( int i = 10 ; i < facts[9]*6 ; i++ )
    {
        int ss = 0;
        for( int k = i ; k ; ss += facts[k%10], k /= 10 ) ;
        if( ss == i ) sum += i;
    }
    printf("ans = %d\n", sum);
}


728x90

댓글