프로젝트 오일러 30
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;
}