Cod sursa(job #2148748)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 1 martie 2018 22:48:57
Problema Next Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>

const int MAXN = 1e6;

char s[MAXN + 1];
int a[MAXN + 1];

static inline int max(int a, int b) {
  return a > b ? a : b;
}

void add(int *a, long long b) {
  int i = 1;
  while (b > 0) {
    b += a[i];
    a[i] = b % 10;
    b /= 10;
    ++i;
  }
  a[0] = max(a[0], i);
}

long long mod(int *a, long long b) {
  int i = a[0];
  long long t = 0;
  while (i > 0) {
    t = (10 * t + a[i]) % b;
    --i;
  }
  return t;
}

int main() {
  FILE *fin, *fout;
  int n;
  long long d;
  char c;
  fin = fopen("next.in", "r");
  n = 0;
  c = fgetc(fin);
  while (c != '\n') {
    s[++n] = c;
    c = fgetc(fin);
  }
  fscanf(fin, "%lld", &d);
  fclose(fin);
  for (int i = n; i > 0; --i) {
    a[++a[0]] = s[i] - '0';
  }
  d -= mod(a, d);
  add(a, d);
  fout = fopen("next.out", "w");
  for (int i = a[0]; i > 0; --i) {
    fprintf(fout, "%d", a[i]);
  }
  fclose(fout);
  return 0;
}