Last active
August 29, 2015 14:24
-
-
Save logalleon/bf252464dd4618192446 to your computer and use it in GitHub Desktop.
Project Euler 8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string.h> | |
#include <algorithm> | |
using namespace::std; | |
// Finds the maximum product of n sequential digits in an s-sized series. | |
long long findSeriesProduct(int a[], int s, int n, int i){ | |
// Base case | |
if (n + i > s) return 0; | |
// Keep track of the current max | |
long long currentMax = 1; | |
// Brute-force iterate over the current section of terms | |
for (int j = 0; j < n; j++) currentMax *= a[i + j]; | |
// Look at the rest of the series until the base case is reached | |
return max(currentMax, findSeriesProduct(a, s, n, i+1)); | |
} | |
// Start of main | |
int main(void){ | |
// Yeah . . . this should be from a file . . . | |
const char* theSeries = "73167176531330624919225119674426574742355349194934" | |
"96983520312774506326239578318016984801869478851843" | |
"85861560789112949495459501737958331952853208805511" | |
"12540698747158523863050715693290963295227443043557" | |
"66896648950445244523161731856403098711121722383113" | |
"62229893423380308135336276614282806444486645238749" | |
"30358907296290491560440772390713810515859307960866" | |
"70172427121883998797908792274921901699720888093776" | |
"65727333001053367881220235421809751254540594752243" | |
"52584907711670556013604839586446706324415722155397" | |
"53697817977846174064955149290862569321978468622482" | |
"83972241375657056057490261407972968652414535100474" | |
"82166370484403199890008895243450658541227588666881" | |
"16427171479924442928230863465674813919123162824586" | |
"17866458359124566529476545682848912883142607690042" | |
"24219022671055626321111109370544217506941658960408" | |
"07198403850962455444362981230987879927244284909188" | |
"84580156166097919133875499200524063689912560717606" | |
"05886116467109405077541002256983155200055935729725" | |
"71636269561882670428252483600823257530420752963450"; | |
// Series as an array of ints | |
int* numSeries = new int[strlen(theSeries)]; | |
// String converstion to int array | |
for (int i = 0; i < strlen(theSeries); i++) numSeries[i] = theSeries[i] - '0'; | |
// Answer plz | |
long long answer = findSeriesProduct(numSeries, 1000, 13, 0); | |
cout << answer; | |
} | |
// End of main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment