9^5 = 59049 이므로, 자리수를 늘려도 가능한 증가폭은 최대 59049 이다. 즉 10만자리대 수까지만 계산해볼 의미가 있다. 다 구한 다음 1은 sum이 아니므로 빼준다.

/*
 	Problem 30 - Digit fifth powers 
*/

#include <stdio.h>
#include <iostream>
#include <cmath>
#include <ctime>
#include <vector>

using namespace std;

int main(int argc, char** argv)
{
	clock_t begin = clock();

	/* starting code */
	long long int sum_of_fifth_powers = 0;
	char num[8] = {0,};
	cout << "sum_of_fifth_powers=" << sum_of_fifth_powers << endl;
	for(int i=0; i<300000; i++)
	{
		sprintf(num, "%d", i);
		int n = 0;
		for(int j=0; j<6; j++)
		{
			if (num[j] == 0) continue;
			n+= pow( (int)(num[j] - '0'), 5);
		}
		if( i == n) {
			cout << "same! i=" << i << endl;
			sum_of_fifth_powers += i;		
		} 
	}
	cout << "sum_of_fifth_powers=" << sum_of_fifth_powers << endl;

	/* end of code */
	clock_t end = clock();
	std::cout << "elapsed time=" << double(end - begin) / CLOCKS_PER_SEC << std::endl;
	return 0;
}