diff --git a/2_2/main.c b/2_2/main.c index d45a6ef..d3ad8d8 100644 --- a/2_2/main.c +++ b/2_2/main.c @@ -10,7 +10,7 @@ char input[] = { -#embed "input.txt" +#embed "input-.txt" ,'\0' // null terminator }; @@ -51,19 +51,15 @@ uint64_t power(uint64_t base, uint64_t exp) { return result; } -bool check_silly(uint64_t in){ - int num = numPlaces(in); - - if(!(num%2)){ - uint64_t div = 1+power(10, num/2); - //printf("check dividend is %d\n", div); - if(in%div == 0){ - return true; - } +uint64_t gen_div(int len, int spacing){ + uint64_t div = 0; + for(int i = 0; i=2; i--){ + if(!(num%i)){ + divs[count] = i; + count++; + } + } + divs[count] = 0; + return divs; +} + uint64_t check_range(uint64_t start, uint64_t end){ int num = numPlaces(start); - if(!(num%2)){ - uint64_t div = 1+power(10, num/2); - uint64_t a = ((start+div-1)/div); - uint64_t b = (end)/div; - //uint64_t sum = sumup(a, b); - uint64_t sum = sumup_gauss(a, b); - //printf("Range %lu - %lu\nsumup: \t%lu\nsumup_gauss: \t%lu\n\n", start, end, sum, sum2); + uint64_t res = 0; + for(int i = 2; i