From ee4c43c85db85e0fae142656aace151dd3fb2dff Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Tue, 20 Oct 2009 18:03:24 +0200 Subject: added some project euler solutions --- src/projecteuler/029.py | 9 +++++++++ src/projecteuler/030.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/projecteuler/034.py | 27 +++++++++++++++++++++++++++ src/projecteuler/040.py | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 src/projecteuler/029.py create mode 100644 src/projecteuler/030.c create mode 100644 src/projecteuler/034.py create mode 100644 src/projecteuler/040.py diff --git a/src/projecteuler/029.py b/src/projecteuler/029.py new file mode 100644 index 0000000..0740911 --- /dev/null +++ b/src/projecteuler/029.py @@ -0,0 +1,9 @@ + +x = [] + +for i in range(2, 101): + for j in range(2, 101): + x.append(i**j) + +print len(set(x)) + diff --git a/src/projecteuler/030.c b/src/projecteuler/030.c new file mode 100644 index 0000000..5d044e9 --- /dev/null +++ b/src/projecteuler/030.c @@ -0,0 +1,41 @@ + +int digit_sum(int number) +{ + int sum = 0; + int digit; + int n = number; + + while(n > 0) + { + digit = n % 10; + sum += digit*digit*digit*digit*digit; + n = n / 10; + } + + if(number == sum) + return 1; + else + return 0; +} + +int main() +{ + int start = 10; + int end = 354294; // 9^5 * 6 + int sum = 0; + int i; + + for(i=start; i 0: + digit = number % 10 + sum += facs[digit] + number = number / 10 + return sum + + +sum = 0 + +for i in xrange(10, 2540160): + if facsum(i) == i: + sum += i + +print sum + diff --git a/src/projecteuler/040.py b/src/projecteuler/040.py new file mode 100644 index 0000000..6f20325 --- /dev/null +++ b/src/projecteuler/040.py @@ -0,0 +1,34 @@ + +# liefert zurueck an welcher Stelle die x-stelligen Zahlen beginnen +def begin(x): + stelle = 1 + for i in range(1, x): + stelle += 9 * (10**(i-1)) * i + return stelle + + +def stelle(pos): + n = 0 + i = 0 + # suche nach Anfang der x-stelligen Region in der pos liegt + while n <= pos: + i += 1 + n = begin(i) + + stellen = i-1 + startpos = begin(stellen) + startvalue = 10**(stellen-1) + diff = pos - startpos + zahl = startvalue + diff/stellen + result = (zahl / (10**(stellen-(diff%stellen)-1))) % 10 + + return result + + +product = 1 + +for i in range(0, 7): + product *= stelle(10**i) + +print product + -- cgit v1.2.3