반응형
이번문제는 각 자릿수를 5승해서 그 합이 자기 자신이 되는 가를 보는 것입니다.
문제 자체의 난이도는 그리 어렵지 않죠.
일단 5승을 계산하는 것은 반복된 작업이라서 배열을 이용해서 0~9까지의 5승을 구해서 적어놓았습니다. 이렇게 하니까 문제 자체가 깔끔해지네요.
시간도 상당히 적게 들고요.
또 고민했던 것이 얼마나 많은 숫자까지 연산할 것인가였죠.
9의 5승이 59049이니까요. 6자리 숫자(9라는 숫자가 2개만 있어도 6자리이니)까지 가능하겠죠. 좀 더 잘 짠다면, 반복연산하는 부분을 더 줄일 수 있을텐데요.
프로그램 첨부합니다.
프로그램은 참고용으로만 봐주세요.
#include <stdio.h> int main() { int sum = 0; const int v[10] = { 0, 1, 32, 243, 1024, 3125, 7776, 16807, 32768, 59049 }; for( int i = 11 ; i <= 6*v[9] ; i++ ) { int q = i; int s = 0; while(q) { int r = q%10; s += v[r]; q /= 10; } if( s == i ) { sum += i; printf("%d\n", i); } } printf("Ans = %d\n", sum); }
728x90
'Programming > Project Euler' 카테고리의 다른 글
32. 프로젝트 오일러 #32 : 팬디지털 곱 (0) | 2015.04.13 |
---|---|
31. 프로젝트 오일러 #31 : 코인들의 합 (0) | 2015.03.30 |
프로젝트 오일러 #29 서로 다른 n제곱 개수 (0) | 2015.03.07 |
28. 프로젝트 오일러 #28 : 회전하는 숫자들의 대각선 합 (0) | 2015.03.04 |
27. 프로젝트 오일러 #27 : 2차식 소수 생성 (0) | 2015.02.28 |
댓글