Cod sursa(job #55741)

Utilizator TabaraTabara Mihai Tabara Data 28 aprilie 2007 12:40:09
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <stdio.h>

#define in "next.in"
#define out "next.out"
#define NMAX 1000005
//#define NMAX 51

long long D, R, rest;
int a[NMAX], b[NMAX], sir[NMAX];

void Read();
void Solve();
long long mod(int A[], long long B);
void add( int A[], int B[] );

FILE *fout = fopen( out, "w" );

int main()
{
    Read();
    Solve();
    
    fclose( fout );
    return 0;
}

void Read()
{
     FILE *fin = fopen( in, "r" );
     char c; int ind = 1;
     while ( fscanf( fin, "%c", &c ) && c != '\n' )
     {
           a[ind] = c - 48;
           ind++;
     }
     fscanf( fin, "%lld", &D );
     ind--;
     a[0] = ind;
  
     fclose( fin );
}

void Solve()
{
     int i;
     int n = 1;
     for ( i = a[0]; i >= 1; --i )
     {
         b[n] = a[i];
         n++;
     }
     n--;
     b[0] = n;
     //R = mod( b, D );
     rest = ( D - R ) % D;
     n = 1;
     /*while ( rest )
     {
           sir[n] = rest % 10;
           rest /= 10;
           n++;
     }*/
     n--;
     sir[0] = n;
     //add( b, sir );
     //AFISAREA
     for ( i = b[0]; i >= 1; --i )
     {
         fprintf( fout, "%d", b[i] );
     }

}
 
long long mod(int A[], long long B)  
{  
     int i;
     long long t = 0;  
     for (i = A[0]; i > 0; i--)  
             t = (t * 10 + A[i]) % B;  
     return t;  
}

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