advent2019

Advent of Code 2019 (C99)
git clone git://bsandro.tech/advent2019
Log | Files | Refs | LICENSE

day01.c (729B)


      1 #include <stdio.h>
      2 #include <inttypes.h>
      3 #include "cputime.h"
      4 
      5 typedef struct {
      6     char data[16];
      7     int len;
      8 } Buffer;
      9 
     10 int btoi(Buffer buf) {
     11     int num = 0;
     12     for (int i=0;i<buf.len;++i) num = num*10+buf.data[i];
     13     return num;
     14 }
     15 
     16 int main(void) {
     17     Buffer buf = {0};
     18     uint64_t p1 = 0;
     19     uint64_t p2 = 0;
     20     for (int c=getchar();c!=EOF;c=getchar()) {
     21         if (c>='0'&&c<='9') {
     22             buf.data[buf.len++] = c-'0';
     23         } else {
     24             int num = btoi(buf);
     25             buf.len = 0;
     26             p1 += num/3-2;
     27             for (int fuel=num/3-2; fuel>0; fuel=fuel/3-2) {
     28                 p2 += fuel;
     29             }
     30         }
     31     }
     32     printf("p1: %"PRIu64"\np2: %"PRIu64"\n", p1, p2);
     33     return 0;
     34 }