Problem 92 auf projecteuler.net
Hier ist meine Lösung zu Problem 92 auf projecteuler.net. Die Lösung ist mittels der Programmiersprache C umgesetzt und kann mittels des gcc mit diesem Befehl kompiliert werden:
gcc -O3 -Wall Problem92.c -lm -o Problem92
Auf meinem Rechner braucht das Skript nur eine sehr kurze Zeit zum Berechnen:
real 0m0.639s
user 0m0.638s
sys 0m0.000s
Der Code schaut so 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 |
#include <stdio.h> typedef unsigned int uint; __inline static uint square(uint x) { return x * x; } __inline static uint solve(uint num) { register uint res = 0, val = num; while(val > 0) { res += square(val % 10); val /= 10; } return res; } int main() { typedef enum { false, true } bool; uint result = 0, i = 0, tmp = 0; for(i = 10000000; i != 0; i--) { tmp = solve(i); bool run = true; while(run) { switch(tmp) { case 1: run = false; break; case 89: result++; run = false; break; default: tmp = solve(tmp); } } } printf("Result: %i", result); return 0; } |
Veröffentlicht am 14. April 2015 von admin in C, Programmierung, projecteuler