Cod sursa(job #1498360)

Utilizator dnprxDan Pracsiu dnprx Data 8 octombrie 2015 15:04:07
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>
#define nmax 1000002
using namespace std;

int a[nmax], n;
long long D;
char s[nmax];

long long Imparte(long long x)
{
    int i;
    long long r;
    r = 0;
    for (i = n; i >= 1; --i)
    {
        r = r * 10LL + 1LL*a[i];
        r = r % x;
    }
    return r;
}

void Afisare()
{
    int i;
    ofstream fout("next.out");
    for (i = n; i >= 1; i--)
        fout << a[i];
    fout << "\n";
    fout.close();
}

void Aduna(long long x)
{
    int i;
    long long y;
    for (i = 1; i <= n && x > 0; ++i)
    {
        y = a[i] + x;
        a[i] = y % 10;
        x = y / 10;
    }
    while (x > 0)
    {
        a[++n] = x % 10;
        x /= 10;
    }
}

void Citire()
{
    int i, k;
    ifstream fin("next.in");
    fin >> s;
    fin >> D;
    fin.close();
    n = strlen(s);
    k = 0;
    for (i = n - 1; i >= 0; --i)
        a[++k] = s[i] - '0';
}

void Rezolva()
{
    long long r;
    r = Imparte(D);
    if (r > 0) Aduna(D - r);
}

int main()
{
    Citire();
    Rezolva();
    Afisare();
    return 0;
}