Cod sursa(job #38614)

Utilizator cos_minBondane Cosmin cos_min Data 25 martie 2007 22:13:46
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <stdio.h>
#include <string>
#include <fstream>
using namespace std;

#define in "next.in"
#define out "next.out"
#define dim 1000002

long long size;
int nr[dim];
int A[dim];
long long d, t=0;
char c[dim];
char d2[40];

int main()
{
    int k;
    char ch;
    size=0;
    k = 0;
    d=0;
    FILE *fin = fopen(in,"r");
    
    fgets(c,dim-1,fin);
    fscanf(fin,"%lld",&d);
    
    fclose(fin);
    freopen(out,"w",stdout);
    
    while ( c[size] >= '0' && c[size] <= '9' ) size++;
    
    int i;
    size -= 1;
    
    for (i = 0; i <= size; i++ )  
        A[size-i+1] = (int)c[i]-48;
        
    A[0] = size+1;
    
    long long t = 0;
      
    for ( i = A[0]; i >= 1; i-- )  
    {
        t = (t * 10 + A[i] ) % d; 
    } 
    
    if ( t == 0 )
    {
         for ( i = A[0]; i >= 1; i-- ) 
             printf("%d",A[i]);
    }
    else
    {
        nr[0] = 0;
        long long v = labs(d-t)%d;
        
        while ( v ) { nr[0]++, nr[nr[0]] = v % 10, v /= 10; };
        
        long long q = 0;  
        for ( i = 1; i <= A[0] || i <= nr[0] || q; i++, q/=10 )  
               A[i] = (q += A[i] + nr[i]) % 10;  
        A[0] = i - 1;  
    
       for ( i = A[0]; i >= 1; i-- )
          printf("%d", A[i]);
        
    }
}