Cod sursa(job #2148762)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 1 martie 2018 23:00:56
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>

const int MAXN = 1e6;

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

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

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, r;
  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';
  }
  r = mod(a, d);
  if (r) {
    d -= r;
    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;
}