Dieses Wochenende habe ich mich mal wieder hingesetzt und eine weiteres Problem auf projecteuler.net gelöst.
Gelöst habe ich Problem 55 in der Programmiersprache C.
Kompiliert habe ich mit folgendem Befehl:
gcc -O3 -Wall Problem55.c -lm -o Problem55
Das Ergebnis berechnet sich sehr schnell:
Result: 249
real 0m0.019s
user 0m0.019s
sys 0m0.000s
So schaut der Quellcode des Programms aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <stdio.h> __uint128_t reverseInt(__uint128_t n) { __uint128_t r = 0; while (n != 0) { r *= 10; r += n % 10; n /= 10; } return r; } int palindromic(__uint128_t n) { return (n == reverseInt(n)) ? 0 : 1; } int main(void) { unsigned int res = 0, i, t; __uint128_t r; for(i = 0; i < 10000; i++) { r = i + reverseInt(i); for(t = 0; t < 50; t++) { if(palindromic(r) == 0) break; else r += reverseInt(r); } if(palindromic(r) == 1) res++; } printf("Result: %d!\n", res); return 0; } |