반응형
연달아서 난이도 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
'Programming > Project Euler' 카테고리의 다른 글
36. 프로젝트 오일러 #36 : 두개의 진법에서 대칭수 (0) | 2015.04.16 |
---|---|
35. 프로젝트 오일러 #35 : 순환하는 소수들 (0) | 2015.04.15 |
프로젝트 오일러 #33 : 약분하는 추가 숫자 (0) | 2015.04.13 |
32. 프로젝트 오일러 #32 : 팬디지털 곱 (0) | 2015.04.13 |
31. 프로젝트 오일러 #31 : 코인들의 합 (0) | 2015.03.30 |
댓글