Cod sursa(job #1001986)

Utilizator Gusti666Lucaciu Catalin Gusti666 Data 26 septembrie 2013 17:56:52
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

#define Nmax 1500000

typedef int BigInteger[Nmax];

BigInteger N;
string s;
long long D;

void read()
{
    ifstream f("next.in");

    f >> s >> D;

    f.close();
}

void init()
{
    for ( int i = s.length() - 1; i >= 0; i-- )
            N[ ++N[0] ] = s[i] - 48;
}

void aduna( BigInteger A, long long B )
{
    int i;
    long long T = B;

    for ( i = 1; i <= A[0] || T; ++i )
    {
        A[i] = ( T += A[i] ) % 10;
        T /= 10;
    }

    A[0] = i-1;
}

long long modulo( BigInteger A, long long B )
{
    long long i, T = 0;

    for ( i = A[0]; i; --i )
            T = ( T * 10 + A[i] ) % B;

    return T;
}

void afis( BigInteger a )
{
    ofstream g("next.out");

    for ( long long i = a[0]; i >= 1; i-- )
            g << a[i] ;

    g << "\n";

    g.close();
}

int main()
{
    read();
    init();

    long long R = modulo( N, D );

    if ( R )
        aduna( N, D - R );

    afis( N );

    return 0;
}