Mai intai trebuie sa te autentifici.

Cod sursa(job #3366642)

Utilizator Emre12Isleam Emre Emre12 Data 3 octombrie 2026 00:29:12
Problema Next Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cctype>
#include <cstdio>
#include <cstring>
#define MAXDIGITS 1000000
#define MAXDIGITSD 16
struct inputBuffer {
  int cr;
  char chr[MAXDIGITS + MAXDIGITSD + 1];
  inline void fillBuf(FILE *fin) {
    std::fread(chr, sizeof(char), MAXDIGITS + MAXDIGITSD + 1, fin);
    cr = 0;
  }
};
inputBuffer in;
inline int readHuge(char v[], inputBuffer &in, FILE *fin) {
  in.fillBuf(fin);
  int i = 0;
  while (in.chr[in.cr] != '\n') {
    v[i++] = in.chr[in.cr++];
  }
  return i;
}
char nr[MAXDIGITS];
int main() {
  FILE *fout, *fin;
  fin = fopen("next.in", "r");
  fout = fopen("next.out", "w");

  unsigned long long d = 0, mod;
  int n, i;
  n = readHuge(nr, in, fin);
  in.cr++;
  while (isdigit(in.chr[in.cr]))
    d = d * 10 + in.chr[in.cr++] - '0';
  mod = 0;
  if (n < 4)
    for (int i = 0; i < n; i++)
      mod = (mod * 10 + nr[i] - '0') % d;
  else {
    for (i = 3; i < n; i += 4)
      mod = (mod * 10000 + (nr[i] - '0') * 1000 + (nr[i - 1] - '0') * 100 +
             (nr[i - 2] - '0') * 10 + (nr[i - 3] - '0')) %
            d;
    for (i -= 4; i < n; i++) {
      mod = (mod * 10 + nr[i] - '0') % d;
    }
  }
  mod = (d - mod) % d;
  unsigned long long t = 0;
  for (int i = n - 1; i >= 0 && (mod || t); i--) {
    t = nr[i] - '0' + (t % 10) + mod % 10;
    nr[i] = t % 10 + '0';
    t /= 10;
    mod /= 10;
  }
  if (mod || t) {
    fputc('1', fout);
  }
  fwrite(nr, sizeof(char), n, fout);
  return 0;
}