Cod sursa(job #1426433)

Utilizator justaddcodeJustadd Code justaddcode Data 29 aprilie 2015 18:29:10
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#define Nmax 1000004
#define ull unsigned long long
using namespace std;
int n, i, j, v[Nmax];
ull k;
char s[Nmax];

void add( int A[], ull B ){
    ull i, t = 0;
    for (i = 1; i <= A[0] || t || B; t /= 10, B /= 10, ++i)
        A[i] = (t += A[i] + B % 10) % 10;
    A[0] = i - 1;
}

ull mod(int A[], ull B)
{
      ull i, t = 0;
      for (i = A[0]; i > 0; --i)
              t = (t * 10 + A[i]) * 1LL % B;
      return t;
}
int main()
{
    freopen("next.in", "r", stdin);
    freopen("next.out", "w", stdout);
    gets(s + 1);
    v[0] = strlen(s + 1);
    for (i = 1; i <= v[0]; ++i)
    v[v[0] - i + 1] = s[i] - '0';
    scanf("%lld", &k);
    ull val =  mod(v, k);
    if (val != 0) val = k - val;
    add(v, val);
    for (i = v[0]; i >= 1; --i)
    printf("%d", v[i]);
    return 0;
}