Problem 55 auf projecteuler.net
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; } |
Veröffentlicht am 14. Juni 2015 von admin in C, Programmierung, projecteuler