Cod sursa(job #65952)

Utilizator raula_sanChis Raoul raula_san Data 13 iunie 2007 22:16:44
Problema Next Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <string>

#define dim 1000001

using namespace std;

string N;

int A[dim], B[17];
int size;

long long unsigned D;

void Read();
void Solve();
void Print();

ifstream f("next.in");
ofstream g("next.out");

int main()
{
    Read();
    Solve();
    Print();
    
    return 0;
}

void Read()
{
     f >> N;
     f >> D;
     
     size = N.length();
     
     f.close();
}

void Solve()
{
     int i, v;
     
     for(i=0; i<size; ++i)
              A[size-i] = (int) N[i] - '0';
              
     A[0] = size;
              
     long long unsigned r = 0;
              
     for(i=size; i; --i)
     {
              r = r * 10 + A[i];
              r %= D;
     }
     
     D -= r;
     
     while(D)
     {
             B[++B[0]] = D % 10;
             D /= 10;
     }
     
     A[0] = B[0] > A[0] ? B[0] : A[0];
     r = 0;
     
     for(i=1; i<=A[0]; ++i)
     {
              if(i <= B[0])
                   A[i] += B[i] + r;
              else
                  A[i] += r;
                   
              r = A[i] / 10;
              A[i] %= 10;
     }
     
     if(r)
          A[++A[0]] = r;
}

void Print()
{
     int i;
     
     for(i=A[0]; i; --i)
                 g << A[i];
     
     g.close();
}