summaryrefslogtreecommitdiff
path: root/p8
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2013-02-13 23:04:27 +0200
committerOskari Timperi <oskari.timperi@iki.fi>2013-02-13 23:04:27 +0200
commitfc3ad977c54a060a2b8aab47a7cea9ece371f05d (patch)
treee1cb036d38f67ff462a50379bbb32eac2c5fd3bb /p8
parent77cdad53d8673c731718723250953f6c4ed5d504 (diff)
downloadeuler-c-fc3ad977c54a060a2b8aab47a7cea9ece371f05d.tar.gz
euler-c-fc3ad977c54a060a2b8aab47a7cea9ece371f05d.zip
problems 3 - 9
Diffstat (limited to 'p8')
-rw-r--r--p8/CMakeLists.txt7
-rw-r--r--p8/main.c71
2 files changed, 78 insertions, 0 deletions
diff --git a/p8/CMakeLists.txt b/p8/CMakeLists.txt
new file mode 100644
index 0000000..05ab8c7
--- /dev/null
+++ b/p8/CMakeLists.txt
@@ -0,0 +1,7 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+PROJECT(euler_problem8 C)
+INCLUDE_DIRECTORIES(../common)
+SET(SOURCES main.c ../common/utils.c)
+ADD_EXECUTABLE(p8 ${SOURCES})
+TARGET_LINK_LIBRARIES(p8 m)
+SET_SOURCE_FILES_PROPERTIES(${SOURCES} PROPERTIES COMPILE_FLAGS -g)
diff --git a/p8/main.c b/p8/main.c
new file mode 100644
index 0000000..f671830
--- /dev/null
+++ b/p8/main.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+static const char *thebignumber =
+"73167176531330624919225119674426574742355349194934"
+"96983520312774506326239578318016984801869478851843"
+"85861560789112949495459501737958331952853208805511"
+"12540698747158523863050715693290963295227443043557"
+"66896648950445244523161731856403098711121722383113"
+"62229893423380308135336276614282806444486645238749"
+"30358907296290491560440772390713810515859307960866"
+"70172427121883998797908792274921901699720888093776"
+"65727333001053367881220235421809751254540594752243"
+"52584907711670556013604839586446706324415722155397"
+"53697817977846174064955149290862569321978468622482"
+"83972241375657056057490261407972968652414535100474"
+"82166370484403199890008895243450658541227588666881"
+"16427171479924442928230863465674813919123162824586"
+"17866458359124566529476545682848912883142607690042"
+"24219022671055626321111109370544217506941658960408"
+"07198403850962455444362981230987879927244284909188"
+"84580156166097919133875499200524063689912560717606"
+"05886116467109405077541002256983155200055935729725"
+"71636269561882670428252483600823257530420752963450";
+
+void read_next_digits(int *pos, int *digits, int *zero)
+{
+ int i = 0;
+ for (i = 0; i < 5; ++i)
+ {
+ digits[i] = thebignumber[(*pos)+i] - 48;
+ if (digits[i] == 0)
+ *zero = 1;
+ }
+ *pos += 1;
+}
+
+int product(int *digits)
+{
+ int i, r=1;
+ for (i = 0; i < 5; ++i)
+ r = r * digits[i];
+ return r;
+}
+
+int max(int a, int b)
+{
+ return a < b ? b : a;
+}
+
+int main(int argc, char **argv)
+{
+ int digits[5];
+ int pos = 0;
+ int zero;
+ int prod=0;
+
+ while (pos < 1000)
+ {
+ zero = 0;
+ read_next_digits(&pos, digits, &zero);
+ if (zero)
+ continue;
+ prod = max(product(digits), prod);
+ }
+
+ printf("%d\n", prod);
+
+ return 0;
+} \ No newline at end of file