From fc3ad977c54a060a2b8aab47a7cea9ece371f05d Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Wed, 13 Feb 2013 23:04:27 +0200 Subject: problems 3 - 9 --- p4/CMakeLists.txt | 7 ++++++ p4/main.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 p4/CMakeLists.txt create mode 100644 p4/main.c (limited to 'p4') diff --git a/p4/CMakeLists.txt b/p4/CMakeLists.txt new file mode 100644 index 0000000..ba228e5 --- /dev/null +++ b/p4/CMakeLists.txt @@ -0,0 +1,7 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +PROJECT(euler_problem4 C) +INCLUDE_DIRECTORIES(../common) +SET(SOURCES main.c ../common/utils.c) +ADD_EXECUTABLE(p4 ${SOURCES}) +TARGET_LINK_LIBRARIES(p4 m) +SET_SOURCE_FILES_PROPERTIES(${SOURCES} PROPERTIES COMPILE_FLAGS -g) diff --git a/p4/main.c b/p4/main.c new file mode 100644 index 0000000..0931535 --- /dev/null +++ b/p4/main.c @@ -0,0 +1,71 @@ +#include +#include + +#include "utils.h" + +list_t *digits(int i) +{ + list_t *lst = NULL; + + while (i > 0) + { + int digit = i % 10; + i = i / 10; + lst = list_append_int(lst, digit); + } + + return lst; +} + +int is_palindrome(int i) +{ + list_t *d = NULL; + int len = 0; + int j = 0; + + if (i < 10) + return 1; + + d = digits(i); + len = list_len(d); + + // printf("i:%d\n", i); + + for (j = 0; j < len/2; ++j) + { + int *a = (int*)list_get_n(d, j); + int *b = (int*)list_get_n(d, len-1-j); + + // printf("a:%d b:%d\n", *a, *b); + + if (*a != *b) + { + return 0; + } + } + + list_free(d, list_free_int); + + return 1; +} + +int main(int argc, char **argv) +{ + int i, j; + + for (i = 999; i >= 900; i--) + { + for (j = 999; j >= 900; j--) + { + int k = i*j; + + if (is_palindrome(k)) + { + printf("%d * %d = %d\n", i, j, k); + return 0; + } + } + } + + return 0; +} \ No newline at end of file -- cgit v1.2.3