From c93d362cfcf42fb988cf96c26a9f2a87fe21cac9 Mon Sep 17 00:00:00 2001 From: H Hautakoski Date: Sun, 30 May 2010 08:44:52 +0200 Subject: [PATCH] p14 --- p14.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 p14.c diff --git a/p14.c b/p14.c new file mode 100644 index 0000000..421745e --- /dev/null +++ b/p14.c @@ -0,0 +1,51 @@ + +/* + * http://projecteuler.net + * + * Projecteuler - Problem 14 + * ------------------------ + * 2010-05-30 Henrik Hautakoski + * + * Fun problem. crazy code. + */ + +#include + +int main() { + + /* working variables */ + int i, nlen, table[1000000] = {0, 1}; + long long n; + /* result */ + int len, rs = 0; + + for(i=2; i < 1000000; i++) { + + n = i; + nlen = 1; + + for(;;) { + if (n & 1) { + n += (n<<1) + 1; + } else { + n >>= 1; + if (n < i) { + nlen += table[n]; + break; + } + } + nlen++; + } + + table[i] = nlen; + + if (nlen > len) { + len = nlen; + rs = i; + } + } + + printf("%i\n", rs); + + return 0; +}