diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2010-09-25 03:19:13 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:32:41 +0200 |
| commit | f64f87c8f3c0c4594ae39f2a3a1d714cef7058d4 (patch) | |
| tree | 4a36bf3617ab57286d26af403f28ad29d27bab46 | |
| parent | 536d4a6fe2b66f95fc97b8019745b40ac5441b4c (diff) | |
projecteuler solution 062
| -rw-r--r-- | src/projecteuler/062.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/projecteuler/062.c b/src/projecteuler/062.c new file mode 100644 index 0000000..4ba3350 --- /dev/null +++ b/src/projecteuler/062.c @@ -0,0 +1,57 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +struct number +{ + char digits[10]; +}; + +const int cubecount = 30000; +struct number* cubedigits; + +int main(void) +{ + int i, j; + + cubedigits = (struct number*) malloc(cubecount*sizeof(struct number)); + memset(cubedigits, 0, cubecount*sizeof(struct number)); + + for(i=1; i<cubecount; i++) + { + unsigned long long c = (unsigned long long)i*i*i; + int smallest = 0; + char count; + + while(c > 0) + { + char digit = c % 10; + cubedigits[i].digits[digit]++; + c /= 10; + } + + // search for permutations (i.e. same digits) + count = 0; + for(j=1; j<i; j++) + { + if(memcmp(cubedigits[i].digits, cubedigits[j].digits, sizeof(struct number)) == 0) + { + if(smallest == 0) + smallest = j; + + count++; + } + } + + if(count == 4) // 4 additional permutations + { + printf("%lli\n", (unsigned long long)smallest*smallest*smallest); + break; + } + } + + free(cubedigits); + + return 0; +} + |
